努力寻找我的代码的错误所在。在第一次加载视图时,一切正常并且加载正常,但是当我重新访问该视图时,前两个单元格似乎是空的。我记录了字典(dict)viewWillAppear:
并且它记录了数据,所以错误必须在cellForRow
方法中。看看我的方法,看看我哪里出错了,第三个单元格填充了第三条数据,所以我完全被难住了,但是前两个单元格完全是空白的,没有数据。
1 回答
首先,你为什么要在你的方法中进行所有这些疯狂的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
子类。