2015-01-13 98 views
-1

因此,刪除表格視圖單元格非常簡單。您從陣列中刪除該對象,並重新加載表視圖數據。現在...我有一個從NSMutableDictionary而不是數組填充的表視圖(我們需要因爲我們正在解析數據並存儲它)。有誰知道如何通過這種方法刪除單元格?我嘗試過簡單地打電話[tableView reloadData];這令人驚訝的工作,但顯然創造了一個無限循環。我不喜歡無盡的循環。有沒有人有什麼建議?我的研究中找不到任何相關信息。刪除由詞典填充的表格單元格

這是委託的cellForRowAtIndexPath一些相關代碼:

 if (![frString isEqual:@"COOL STUFF"] && [subString isEqualToString:@"COOL"]) { 
      NSLog(@"A COOL is showing where it shouldn't, and it's %@", subString); 
      //remove all cells starting with COOL 

      [myDictionary removeObjectForKey:[self.dictName objectAtIndex:row]]; 
      [tableView reloadData]; 

     } 

另外,我寧願隱藏單元格,而不是永久刪除從字典中的信息。這可能嗎?

+0

在*'reloadData'完成刷新視圖之前,您應該修改您的數據源*。一旦進入'cellForRow ...',它已經太晚了。 –

回答

1

有你做錯了幾件事情:

  • cellForRowAtIndexPath你不應該刪除的行,因爲當tableview中要呈現這就是所謂的。所以你刪除一行,然後再次渲染,調用cellForRowAtIndexPath:,...
  • 刪除行或重新加載數據。 deleteRowsAtIndexPaths:刪除帶動畫的行集,reloadData重新加載整個tableView,因此取消動畫,並且deleteRowsAtIndexPaths:變得毫無意義
  • 確保您返回正確的numberOfRowsInSection:您是否從字典中刪除數據?
+0

啊我明白了......所以我應該在哪個委託方法中調用它? – John

+0

什麼觸發細胞刪除? – Julien

+0

還沒有。它不是一個可編輯的表格視圖。你知道是否有辦法隱藏單元格,而不是從我的字典中刪除信息? – John