我正在制作一个包含两个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,那么它可以正常工作。如何解决这个问题? 请指教!谢谢!
答案 0 :(得分:0)
如果您正在使用TableViewController的接口构建器检查
视图控制器下应该有一个“表视图”。
在表格视图的属性检查器中检查“内容”,如果已分配“动态原型”或“静态单元格”?
将其更改为“动态原型”。
答案 1 :(得分:0)
问题在于您的搜索方法,每次运行搜索逻辑并将对象添加到searchArray时 - 您需要在开始添加之前从中清除对象。你可以使用
[searchResultArray removeAllObjects];
答案 2 :(得分:0)
正如iMeMyself所说,你应该为tableview分配动态原型。因为当数据源方法被调用时,它将动态检查tableview。所以给它分配了动态原型。
答案 3 :(得分:-1)
确保将两个tableviews设置为" Dynamic Prototypes"