【发布时间】:2013-06-06 22:01:21
【问题描述】:
我已经为此苦苦挣扎了一个星期,我的头快要爆炸了。
基本上我使用 Prototype Cell,在 CellWillAppear 中我做了一些自定义,比如背景颜色。没有什么花哨。
因此,我的表格视图在启动时总是空的(没有单元格),除非数组(数据源)被填充了一些东西。所以我所做的是在 NumberOfRowsInSection 中:
return dataArray.count < 10? 10 : dataArray.count
我这样做是因为我希望在没有数据时至少看到一些空单元格。 这意味着它将在启动时显示至少 10 个空单元格。
为了向单元格添加数据,我每次都在我的 tableviewcontroller 中调用委托方法以在数据数组中添加一个实体(正在这样做,因为我认为这比等到整个数组完成填充然后调用 [self.tableView reloadData];) 然后使用 reloadRowsAtIndexPaths 刷新它。但是每次到达索引10时它都会崩溃(错误:...更新前数据数为10,但更新后为11)。
我真正想要的是:
1.) 准备一些数据
2.) 将其发送到 uitableview 控制器并将其添加到那里的数组中,而不是等待然后将整个数组发送到表视图并立即刷新。
3.) 更新后只重新加载一行(而不是使用 reloadData -> 因为我有不同颜色的单元格,整个重新加载的事情导致我的表格视图疯狂闪烁)。
我对单元格自定义所做的一件事是在 willDisplayCell 中: 我在那里所做的是更改单元格的背景颜色。再一次,没有什么花哨的。 但是由于在启动时没有数据,所以没有单元格是可见的(ui tablew,根本没有显示单元格),除非我这样做
return dataArray.count < 10? 10 : dataArray.count;
至少显示了 10 个空单元格(为什么我必须执行上述操作只是为了显示一些自定义的空单元格击败我......)。
使用reloadData刷新是没有问题的,但是由于我每次数据准备好时都在表视图中更新数据源数组,而不是将所有准备好的数据保存到该数组中并通过使用reloadData将其发送到表视图进行更新,我想逐行更新。
我感觉错误来自这样一个事实,如果我在数组中添加一项,然后调用 reloadRowsAtIndexPath,它会说“好的,你之前有一项,但更新后有 2 个!不一致。 。”
我已经尝试过使用[tableView beginUpdate]; and [tableView endUpdate];
到目前为止没有任何效果.....
总结一下:即使数据数组在启动时为空,我如何才能显示不同颜色的单元格(就像默认的 ui 表格视图,即使没有数据也可以完全显示单元格)并只更新其中一个一条数据准备好后的单元格,而不是使用 reloadData 更新整个 ui 表视图?
提前多谢,请指教。问候。
【问题讨论】:
-
你能把你的问题改得更专注吗?最后一段似乎说明了最大的问题。另一方面对于异步图像加载:bit.ly/112chSV UITableView 是一个严肃的野兽,你应该阅读几个教程以在一定程度上理解它。
-
不能用
UITableView的- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation方法吗?更多信息在这里:developer.apple.com/library/ios/#documentation/uikit/reference/…
标签: ios uitableview