2017-04-25 74 views
0

我有一個上傳項目上傳到AWS S3的所有任務。一旦項目已上載,它觸發一個NSNotification到ViewController動畫的小區(一個嗖嗖左效果),然後從表視圖去除細胞:一次調用多個deleteRowsAtIndexPaths

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

表視圖數據源是由列表管理這些對象及其狀態。在通知觀察者中,在swish動畫(showExpandingButton)之後,我得到了該項目所屬的單元格,並將狀態設置爲.Uploaded,並將其從tableView數據源中移除。

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

RemoveCells()然後從表視圖中刪除單元格。但是,我面臨的問題是通知可能幾乎同時被觸發,這意味着表視圖數據源可以比刪除單元格的函數更快地更新。有什麼想法嗎?

+0

你在使用表格視圖動畫嗎?如果你不需要,我認爲使用reloadData即使重複調用也是安全的。如果必須的話,你必須以某種方式合併通知調用,所以從表視圖中刪除單元格只能在runloop循環中調用一次。我認爲你可以看看NSNotificationQueue來幫助做到這一點。 – riadhluke

+0

如果視圖控制器相互關聯,請勿使用'NSNotification'。改爲使用協議/委託或回調關閉。 – vadian

+0

上傳管理器不是視圖控制器,所以我認爲它需要是一個通知。 NSNotificationQueue看起來很有趣 - 將看看這是否是一個選項謝謝。 –

回答

0

我不是完全刪除單元格,而是爲了防止由於動畫延遲而導致表格視圖中數據源和行數之間的衝突,爲行高度更改設置動畫。雖然不是一個完整的解決方案 - 它適用於我目前的情況。