2017-04-25 1 views
0

AWS S3에 항목을 업로드하는 모든 작업을 업로드했습니다.한 번에 여러 개의 deleteRowsAtIndexPaths가 호출되었습니다.

NSNotificationCenter.defaultCenter().postNotificationName("itemUploaded", object: nil, userInfo: ["item": item]) 

테이블 뷰 데이터 소스리스트에 의해 관리되어 상품이 업로드되면, 상기 테이블 뷰로부터 세포를 분리 한 후, 셀 (휴 왼쪽 작용)을 애니메이션으로하기의 ViewController에 NSNotification를 발생 이러한 개체 및 해당 상태. 알림 옵저버에서 swish 애니메이션 (showExpandingButton)을 수행 한 후에이 항목이 속한 셀을 가져오고 상태를 .Uploaded로 설정하면 tableView 데이터 소스에서 제거됩니다.

cell.showExpandingButton({ (completed) in 
    self.removeCells(item) 
}) 

RemoveCells()는 테이블보기에서 셀을 삭제합니다. 그러나, 내가 직면하고있는 문제는 통지가 거의 동시에 발생 될 수 있다는 것인데, 이는 테이블 뷰 데이터 소스가 셀을 제거하는 함수보다 더 빨리 업데이트 할 수 있음을 의미합니다. 이견있는 사람?

+0

테이블 뷰 애니메이션을 사용하고 있습니까? 당신이 필요가 없다면, 나는 reloadData를 사용하는 것이 반복 호출에서도 안전하다고 생각한다. 해야한다면 테이블 호출에서 셀을 삭제하는 것이 runloop 루프에서 한 번만 호출되므로 알림 호출을 어떻게 든 결합해야합니다. 그 일을 돕기 위해 NSNotificationQueue를 살펴볼 수 있다고 생각합니다. – riadhluke

+0

뷰 컨트롤러가 서로 관련되어 있으면 NSNotification을 사용하지 마십시오. 대신 프로토콜/위임 또는 콜백 폐쇄를 사용하십시오. – vadian

+0

업로드 관리자가보기 컨트롤러가 아니므로 알림이 필요하다고 생각합니다. NSNotificationQueue가 재미있어 보입니다. 옵션 고마워요. –

답변

0

셀을 완전히 제거하는 대신 애니메이션 지연으로 인해 데이터 소스와 테이블 뷰의 행 수 사이의 충돌을 방지하기 위해 행 높이 변경을 애니메이션으로 처리합니다. 완전한 솔루션은 아니지만 현재의 시나리오에서 작동합니다.

관련 문제