Objective c JSON,cellForRowAtIndexPath错误

Objective c JSON,cellForRowAtIndexPath错误,objective-c,json,uitableview,Objective C,Json,Uitableview,努力找出我的代码的错误所在。在第一个视图加载时,一切正常,加载正常,但当我再次访问该视图时,前两个单元格似乎是空的。我将字典(dict)记录在视图中将出现:中,它将数据记录得很好,因此错误必须出现在cellForRow方法中。看看我的方法,看看哪里出了问题,第三个单元格填充了第三条数据,所以我完全被难住了,但前两个单元格是完全空白的,没有数据 首先,为什么要在表视图:cellForRowAtIndexPath:方法中进行所有疯狂的UITableViewCell自定义?创建一个自定义的UITabl

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


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

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

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


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

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

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

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


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

我是新手,谢谢你的帮助!没有太多的想法如何做到这一点,你可以给我看一些示例代码,帮助非常感谢!非常感谢。嘿,很抱歉我没来展示示例代码,但我很高兴你把它整理好了。我是个新手,谢谢你的帮助!没有太多的想法如何做到这一点,你可以给我看一些示例代码,帮助非常感谢!非常感谢。嘿,对不起,我没来展示示例代码,但我很高兴你把它整理好了。