- ios7/
- Ios7 未正确重建重用的UITableView单元格
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中,您在哪里重新加载数据?