我正在使用一个UIViewController,如下所示:
@interface RssViewController : UIViewController <UITableViewDataSource,UITableViewDelegate,BlogRssParserDelegate>
我在UITableView(在RssViewController中)中显示RSS提要,具体取决于在UISegmentedControl上选择的段。
当我滚动tableview然后选择UISegmentedControl的另一段时,我的应用程序崩溃了。例如,我默认有两个RSS源我在段0显示RSS源。这个源有36行。我在段1加载的RSS提要只有5行。当我在段0时滚动RSS提要然后滚动停止之前我切换到段1的RSS提要我崩溃应用程序时出现以下错误:
*由于未捕获的异常'NSRangeException'而终止应用,原因:'* - [NSCFArray objectAtIndex:]:索引(36)超出边界(0)'
如果我等到段0的RSS源滚动停止那么选择段1,一切正常。
如何阻止此崩溃?我想重用相同的tableview,因为只有数据发生了变化。我可以看到它因行数而崩溃 - 我从36行减少到5行但是我怎么能解决这个问题呢?
任何帮助/建议都将不胜感激。
答案 0 :(得分:0)
快速而肮脏的方法是检查您在tableView:cellForRowAtIndexPath:
中查看的数组的边界,如果indexPath.row
大于或等于{{{},则返回空字符串1}}。
您还可以在切换细分时尝试使用[array count]
或使用deleteRowsAtIndexPaths:withRowAnimation:
明确滚动。我假设你已经在调用scrollToRowAtIndexPath:atScrollPosition:animated:
并且它没有中断滚动?