0

努力寻找我的代码的错误所在。在第一次加载视图时,一切正常并且加载正常,但是当我重新访问该视图时,前两个单元格似乎是空的。我记录了字典(dict)viewWillAppear:并且它记录了数据,所以错误必须在cellForRow方法中。看看我的方法,看看我哪里出错了,第三个单元格填充了第三条数据,所以我完全被难住了,但是前两个单元格完全是空白的,没有数据。

http://pastebin.com/Va84MG5g

4

1 回答 1

3

首先,你为什么要在你的方法中进行所有这些疯狂的UITableViewCell定制tableView:cellForRowAtIndexPath:?创建一个自定义UITableViewCell子类并在那里进行设置。

在类的initWithStyle:方法中,用 的框架添加所有子视图CGRectZero,因为在初始化时,表格视图单元格不知道它有多大。您也可以在此处设置文本对齐方式、颜色等。然后,在 中layoutSubviews,继续设置所有帧。覆盖prepareForReuse并将您的内容UIImageViews设置为零。这将有助于提高重复使用单元的性能。

至于为什么您没有在前两个单元格中看到您的数据,我最初的想法是这与您设置单元格以供重用的方式有关。您要求您的 tableView 出列常规UITableViewCell并且仅在返回的单元格为nil. 那么当它返回 a 时会发生什么UITableViewCell?您跳过分配/初始化所有这些子视图的部分,因此您基本上没有向单元格添加任何内容。我觉得如果您创建一个自定义子类并要求您UITableView将其出列您将得到您正在寻找的结果。

注意:如果您的目标至少是 iOS 5,您可以UITableViewCell在 nib 中创建您的布局并将 nib 注册到表格视图。这样做将保证您总是得到一个出队的单元格,并且您永远不必进行 if (cell == nil) 检查。如果你的目标是 iOS 6,你可以注册一个UITableViewCell子类。

于 2013-01-11T19:59:14.383 回答