UISegmentedControl与UITableVIew NSRangeException

时间:2010-03-23 21:12:11

标签: iphone uitableview rss uisegmentedcontrol

我正在使用一个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行但是我怎么能解决这个问题呢?

任何帮助/建议都将不胜感激。

1 个答案:

答案 0 :(得分:0)

快速而肮脏的方法是检查您在tableView:cellForRowAtIndexPath:中查看的数组的边界,如果indexPath.row大于或等于{{{},则返回空字符串1}}。

您还可以在切换细分时尝试使用[array count]或使用deleteRowsAtIndexPaths:withRowAnimation:明确滚动。我假设你已经在调用scrollToRowAtIndexPath:atScrollPosition:animated:并且它没有中断滚动?