在 DetailTableViewController 的表格视图中,我使用了故事板中的原型单元格。但是对于某些情况,原型单元格不合适,所以我定义了一个带有nib的自定义单元格和一个用于nib的自定义单元格类。然后我在 DetailTableViewController&#39> 方法 viewDidLoad()中注册自定义nib单元格,并使用特殊的单元格重用标识符。然后在 tableView(_:cellForRowAtIndexPath:)中,我将自定义nib单元格取消对应的情况。在某些情况下,我将原型单元出列使用。
但是我发现如果这两种单元格在表格视图中共存,那么原型单元会影响自定义nib单元格的外观。例如,当我更改自定义笔尖单元格的背景颜色时,它会显示原型的背景颜色。我必须单击自定义笔尖单元格以显示其真实背景颜色。
如果我将原型单元格删除为空,只使用自定义笔尖单元格,那么一切正常。
原型细胞有什么特别之处吗?正如我所知(from this answer),原型单元只不过是故事板中定义的自定义笔尖单元格。那为什么?
答案 0 :(得分:0)
最后,我发现它不是影响自定义单元格的原型单元格。相反,它是原型单元实例,它超过了影响自定义单元实例所需的数量。当表视图请求一个单元格时,我首先创建了一个原型单元实例。然后我检查它是否适合indexPath。如果没有,我然后创建一个自定义单元格实例并返回它。
这意味着创建了一些原型单元实例,但未使用。单元格实例很昂贵, 我认为苹果使用这些未使用的单元格来提升性能(我不确定) 。因此,它们会影响自定义单元格实例。我纠正这个错误后,一切正常。如果有人知道详细原因,请在此处发布。真的很感激。
希望这个答案有所帮助。