2010-07-07 34 views
3

我有一個UIView上的3個UITableView,其中我從NSMutableArrays中加載3組不同的數據集。如果我調用[myTableView reloadData]重新加載的數據類型 - 它實際上會與已經存在的數據一起添加到表中。因此,3次調用reloadData會導致三重列出的信息。UITableView reloadData複製數據

如何防止發生這種情況,或者在重新加載之前如何清除我的tableView?

+0

在UITableView重新加載時調用的方法中是否正在追加數據? – Garrett 2010-07-07 21:59:04

+1

哈哈哈 - 爲什麼我是,DOH!重複發生在我的數組中,而不是我的表格視圖 - 謝謝! – Slee 2010-07-07 22:17:45

+0

作爲答案發布,所以我可以給你信用 – Slee 2010-07-07 22:18:04

回答

1

這最常見的原因是不重複使用tableview單元格。如果爲數組中的每個邏輯行創建一個新單元(而不是出列和重用),則tableview可能會繼續顯示所有單元。 (**編輯:**可能不會發生)

如果不是,那麼這將是在三種方法reloadData調用之一:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView; 
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; 
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath; 

Tableviews簡單地顯示數據。如果表格重複,那麼你很可能在某處複製代碼中的數據。您想確保其中的一個不會導致再次讀取數組的原始源,並將其附加到將數據提供給表的MutableArray。

+0

創建新單元格不重複可見數據。如果單元格是使用重用標識符創建的,則會導致舊行有效泄漏(更準確地說,會被不必要地緩存)。但是,這些單元格不會在屏幕上,它們只會被tableview緩存。 – 2010-07-07 22:43:46

+0

我似乎記得在某些情況下堆積了一些東西,但我可能是錯的。 – TechZen 2010-07-08 02:39:29