我正在开发一个具有搜索功能的 iPhone 应用程序,其中在 UISearchBar 中编写搜索词会更改(过滤)下面的 UITabelView 的输出。
当用户正在编辑搜索栏的内容并删除所有文本时,将执行以下代码
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {
if([searchText isEqualToString:@""] || searchText==nil){
[tableData removeAllObjects]; //clear array that holds data for table view
[tableData addObjectsFromArray:tumorNames]; //load array with database
[searchTableView reloadData];
return;
}
}
(method continues...)
现在,在搜索栏中进行编辑时,这工作得很好:无论您使用退格/删除删除所有文本还是按下“清除”按钮都无关紧要 - 搜索字段被清除并且所有可搜索项目在表中可见看法。按下“取消”按钮也是如此,但在这种情况下,搜索栏当然会退出第一响应者。
但是,当进行搜索并在表格视图中显示一个或多个结果项时(搜索栏已退出第一响应者并且键盘已消失),仍然可以按清除按钮,但会导致应用程序崩溃并显示以下内容信息:
'NSRangeException', reason: '*** -[NSCFArray objectAtIndex:]: index (0) beyond bounds (0)'
看来问题在于重新加载表视图数据,但我无法弄清楚为什么在一种情况下数组的索引会出现问题,而在另一种情况下却没有。
任何人都知道为什么会发生这种情况?所有帮助表示赞赏。
瑞典格雷戈尔