两个TableView之间的numberOfRowsInSection函数的错误

时间:2012-09-26 09:21:41

标签: objective-c ios uitableview

我正在制作一个包含两个tableview的View,其中一个是self.tableView,另一个是searchDisplayController.searchResultsTableView来显示搜索结果。代码如下:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    if (tableView == self.searchDisplayController.searchResultsTableView) {
        return [searchResultArray count];
    } else if (tableView == self.tableView){
        return [menuItems count];
    } }

问题是我知道return [menuItems count]值是10,如果[searchResultArray count]的返回值大于10,我将得到以下错误信息:

2012-09-26 17:11:50.332 searchResultArray count:80
2012-09-26 17:11:50.337 *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 10 beyond bounds [0 .. 9]'

但是如果[searchResultArray count]的返回值小于10,那么它可以正常工作。如何解决这个问题? 请指教!谢谢!

4 个答案:

答案 0 :(得分:0)

如果您正在使用TableViewController的接口构建器检查

视图控制器下应该有一个“表视图”。

在表格视图的属性检查器中检查“内容”,如果已分配“动态原型”或“静态单元格”?

将其更改为“动态原型”。

答案 1 :(得分:0)

问题在于您的搜索方法,每次运行搜索逻辑并将对象添加到searchArray时 - 您需要在开始添加之前从中清除对象。你可以使用

[searchResultArray removeAllObjects];

答案 2 :(得分:0)

正如iMeMyself所说,你应该为tableview分配动态原型。因为当数据源方法被调用时,它将动态检查tableview。所以给它分配了动态原型。

答案 3 :(得分:-1)

确保将两个tableviews设置为" Dynamic Prototypes"