Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios7 未正确重建重用的UITableView单元格_Ios7_Uitableview_Reuseidentifier - Fatal编程技术网

Ios7 未正确重建重用的UITableView单元格

Ios7 未正确重建重用的UITableView单元格,ios7,uitableview,reuseidentifier,Ios7,Uitableview,Reuseidentifier,我有一个表视图控制器和一个关联的表视图。此列表中的单元格还包含tableView,或者更具体地说,该单元格有一个tableView,并且该单元格的每个实例都使用嵌入的tableView来显示稍微不同的名称列表。这是一张图表: 父表视图 __tableViewCell ____嵌入式桌面视图 ______名称1(在单元格中) ______名称2“ ______名称3“ 嵌入式tableView没有视图控制器。委托和数据源都映射到嵌入式tableView类。这都是基于情节提要的 在模拟器上,这个设置

我有一个表视图控制器和一个关联的表视图。此列表中的单元格还包含tableView,或者更具体地说,该单元格有一个tableView,并且该单元格的每个实例都使用嵌入的tableView来显示稍微不同的名称列表。这是一张图表:

  • 父表视图
  • __tableViewCell
  • ____嵌入式桌面视图
  • ______名称1(在单元格中)
  • ______名称2“
  • ______名称3“
  • 嵌入式tableView没有视图控制器。委托和数据源都映射到嵌入式tableView类。这都是基于情节提要的

    在模拟器上,这个设置对于列表中显示的前几个单元格很好地工作——每个单元格都显示自己的名称列表——但是在第四个或第五个单元格之后(是的,我已经在屏幕上滚动了好几次),单元格仍然显示,但它们不是由嵌入的表视图生成的;它们有旧的和不正确的名称列表。此时,对于嵌入的表视图,既没有调用awakeFromNib,也没有调用initWithCoder(这两个都是为成功显示的单元格调用的)

    这意味着(对我来说)父表视图(拥有嵌入表视图的单元格的表视图)正在重用从重用列表中删除的单元格。这带来了一些问题:

  • 为什么它不尝试重建单元格?在父表视图的tableView:CellForRowatineXpath中,我得到一个单元格,并用一些信息(例如,单元格中还有一个UILabel,我可以识别它)和新内容填充它,但单元格的嵌入tableView部分没有重建

  • 如果这是从某个缓存中提取重用单元格的情况,我如何将每个缓存项标记为“脏”以便重建它?我知道tableView:DiEndDisplayingCell:ForRowatineXpath:但我不知道如何使用它来完成重建。例如,我尝试删除该单元格(即cell=nil),但这没有帮助(我在父表视图和嵌入的表视图上都这样做了)

  • 在关于prepareForReuse的讨论中(我没有尝试,因为我想改变的不仅仅是属性),它说,重用单元格时,tableView:cellForRowAtIndexPath:中表视图的委托应始终重置所有内容。如果单元格对象没有关联的重用标识符,则不会调用此方法。如果重写此方法,则必须确保调用超类实现这正是我想做的,但是嵌入式tableView不知怎么地摆脱了这一点(回想起来,既不是awakeFromNib,也不是initWithCoder被调用)


  • 谢谢。

    您的问题太长了,不如缩短一点并包含一些代码?在tableViewCell中,您在哪里重新加载数据?