我有一個UIView上的3個UITableView,其中我從NSMutableArrays中加載3組不同的數據集。如果我調用[myTableView reloadData]重新加載的數據類型 - 它實際上會與已經存在的數據一起添加到表中。因此,3次調用reloadData會導致三重列出的信息。UITableView reloadData複製數據
如何防止發生這種情況,或者在重新加載之前如何清除我的tableView?
我有一個UIView上的3個UITableView,其中我從NSMutableArrays中加載3組不同的數據集。如果我調用[myTableView reloadData]重新加載的數據類型 - 它實際上會與已經存在的數據一起添加到表中。因此,3次調用reloadData會導致三重列出的信息。UITableView reloadData複製數據
如何防止發生這種情況,或者在重新加載之前如何清除我的tableView?
這最常見的原因是不重複使用tableview單元格。如果爲數組中的每個邏輯行創建一個新單元(而不是出列和重用),則tableview可能會繼續顯示所有單元。
(**編輯:**可能不會發生)
如果不是,那麼這將是在三種方法reloadData
調用之一:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
Tableviews簡單地顯示數據。如果表格重複,那麼你很可能在某處複製代碼中的數據。您想確保其中的一個不會導致再次讀取數組的原始源,並將其附加到將數據提供給表的MutableArray。
創建新單元格不重複可見數據。如果單元格是使用重用標識符創建的,則會導致舊行有效泄漏(更準確地說,會被不必要地緩存)。但是,這些單元格不會在屏幕上,它們只會被tableview緩存。 – 2010-07-07 22:43:46
我似乎記得在某些情況下堆積了一些東西,但我可能是錯的。 – TechZen 2010-07-08 02:39:29
在UITableView重新加載時調用的方法中是否正在追加數據? – Garrett 2010-07-07 21:59:04
哈哈哈 - 爲什麼我是,DOH!重複發生在我的數組中,而不是我的表格視圖 - 謝謝! – Slee 2010-07-07 22:17:45
作爲答案發布,所以我可以給你信用 – Slee 2010-07-07 22:18:04