2013-01-11 59 views
0

努力找到我的代码出现故障的位置。在第一次查看加载时,一切正常,并且应该正常加载,但是当我重新访问该视图时,似乎前两个单元格是空的。我在viewWillAppear:中记录了字典(dict),它记录的数据很好,所以错误必须在cellForRow方法中。看看我的方法,看看我错了什么,第三个单元填充第三个数据,所以我完全陷入困境,但前两个单元完全是空白的,没有数据。JSON,cellForRowAtIndexPath错误

http://pastebin.com/Va84MG5g

回答

3

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

在该类的initWithStyle:方法中,将所有子视图添加为CGRectZero,因为在初始化时,表视图单元格不知道它有多大。您也可以在这里设置文本对齐,颜色等。然后,在layoutSubviews中,继续并设置所有帧。覆盖prepareForReuse并将您的UIImageViews设置为零。这将有助于重复使用单元的性能。至于为什么你没有在你的前两个单元格中看到你的数据,我最初的想法是,它与你设置你的单元格重用的方式有关。如果返回的单元格是nil,您要求您的tableView将一个常规的UITableViewCell出列并仅创建所有这些子视图。那么当它返回UITableViewCell时会发生什么?你跳过你分配/初始化所有这些子视图的部分,所以你基本上什么也没有添加到单元格中。我觉得如果你创建一个自定义的子类,并要求你的UITableView取消,那么,你会得到你正在寻找的结果。

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

+0

我是新手,谢谢你的帮助!没有太多想法如何做到这一点,你能告诉我一些示例代码,非常感谢!非常感谢。 – rjg

+0

所有排序,工作完美!谢了哥们。 – rjg

+0

嘿,对不起,我没有来显示示例代码,但我很高兴你把它分类。 – jmstone617