0

我正在制作一个包含两个表视图的视图,其中一个是 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];
    } }

问题是我知道返回的 [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

4 回答 4

0

如果您使用的是界面生成器,请检查 TableViewController

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

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

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

于 2012-09-26T09:28:07.327 回答
0

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

[searchResultArray removeAllObjects];
于 2012-09-26T09:28:11.383 回答
0

正如 iMeMyself 所说,您应该将动态原型分配给两个 tableview。因为当调用数据源方法时,它将动态检查表格视图。所以分配给它动态原型。

于 2012-09-26T11:58:00.067 回答
-1

确保两个表视图都设置为“动态原型”

于 2012-09-26T09:45:24.900 回答