Я работаю над iPhone-приложением с функцией поиска, где запись условий поиска в UISearchBar изменяет (фильтрует) вывод UITabelView ниже.Iphone Search Bar clear button crashing app
Когда пользователь редактирует содержимое панели поиска и удаляет весь текст, следующий код выполняется в
- (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)'
представляется, что проблема заключается в повторной загрузки данных просмотра таблицы, но я не могу понять, почему не было бы проблем с индексом массива в одном случае, но не в другом.
Кто-нибудь знает, почему это произойдет? Вся помощь была оценена.
Грегор, Швеция
[поискBar resignFirstResponder]; делает трюк – Souljacker