UITableView reloadData复制数据

时间:2010-07-07 21:57:10

标签: objective-c iphone ipad

我在UIView上有3个UITableViews,我从NSMutableArrays中加载了3组不同的数据。如果我调用[myTableView reloadData]数据类型的重新加载 - 它实际上会被添加到表中以及已经存在的内容。所以3次调用reloadData会产生三重列表信息。

如何防止这种情况发生或如何在重新加载之前清除tableView?

2 个答案:

答案 0 :(得分:1)

最常见的原因是不重用tableview单元格。如果为数组中的每个逻辑行创建一个新单元格(而不是出列并重新使用),则tableview可能会继续显示所有单元格。 (**编辑:**可能不会发生。)

如果不是这样,那么它将是reloadData调用的三种方法之一:

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

表格视图只显示数据。如果表重复,那么您很可能在某处复制代码中的数据。您希望确保其中一个不会再次读取数组的原始源并将其附加到向表提供数据的MutableArray。

答案 1 :(得分:-2)

使用hasUncommittedUpdates方法。

例如:

if (self.tableview.hasUncommittedUpdates) { self.tableview.reloadData() } 

这将清除先前的数据并获取新的数据。希望这会有所帮助