0

我正在使用一个 UIViewController,如图所示:

@interface RssViewController : UIViewController <UITableViewDataSource,UITableViewDelegate,BlogRssParserDelegate>

根据在 UISegmentedControl 上选择的段,我在 UITableView(在 RssViewController 中)显示 RSS 提要。

当我滚动 tableview 然后选择 UISegmentedControl 的另一段时,我的应用程序崩溃。例如,默认情况下我有两个 RSS 提要,我在分段 0 处显示 RSS 提要。此提要有 36 行。我在第 1 段加载的 RSS 提要只有 5 行。当我在第 0 段滚动 RSS 提要时,在滚动停止之前,我切换到第 1 段的 RSS 提要,导致应用程序崩溃并出现以下错误:

* 由于未捕获的异常“NSRangeException”而终止应用程序,原因:“* -[NSCFArray objectAtIndex:]: index (36) beyond bounds (0)”

如果我等到第 0 段的 RSS 提要上的滚动停止然后选择第 1 段,一切正常。

我怎样才能阻止这种崩溃?我想重用相同的表格视图,因为只有数据发生了变化。我可以看到它由于行数而崩溃 - 我从 36 行减少到 5 行但是我该如何解决这个问题?

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

4

1 回答 1

0

一种快速而简单的方法是检查您正在查看的数组的边界,如果大于或等于 ,tableView:cellForRowAtIndexPath:则返回一个空字符串。indexPath.row[array count]

您也可以尝试deleteRowsAtIndexPaths:withRowAnimation:在切换段或显式滚动时使用scrollToRowAtIndexPath:atScrollPosition:animated:. 我假设您已经在打电话reloadData并且它没有中断滚动?

于 2010-03-23T21:23:53.120 回答