我遇到了调用tableView:numberOfRowsInSection:
的问题,然后调用其他方法影响底层数组,然后tableView:cellForRowAtIndexPath:
被调用并崩溃,因为底层数组的内容是与调用numberOfRowsInSection
时不同。如果框架在调用numberOfRowsInSection
之前调用cellForRowAtIndexPath
,则不会出现问题。
由于我不能期望在短期内修复框架,我正在考虑的最简单的解决方案是返回一个虚拟单元,如果底层数组不包含请求的条目。
有关如何发生此问题的更多详细信息:
UINavigationController
。[_tableView reloadData]
。tabBarController:didSelectViewController:
方法,并在选择的视图控制器上调用popToRootViewControllerAnimated:
。重新解决问题的步骤:
在第五步,这是调用的顺序:
感谢您提供任何帮助。
答案 0 :(得分:1)
这对于在表视图上不正确地调用reloadData是一个问题。我继承了这段代码,但我已经足够iOS了,我不明白正确的用法。
代码在loadView和viewWillAppear中调用[_tableView reloadData]。删除这两个调用解决了这个特殊问题。
答案 1 :(得分:0)
我有类似的问题。
如果您的控制器中有一个调用reloadData
的观察者,请使用viewWillAppear
方法添加观察者,并使用viewWillDisappear
将其删除。