У меня есть UITableView, который на didSelectRowAtIndexPath выдвигает другой UITableView, чтобы выполнить поиск ...
LocationSearchViewController *locationSearchViewController = [[LocationSearchViewController alloc] initWithNibName:@"LocationSearchViewController" bundle:nil];
locationSearchViewController.delegate = self;
UITableViewCell *cell = [myTableView cellForRowAtIndexPath:indexPath];
locationSearchViewController.defaultLocation = cell.detailTextLabel.text;
[[self navigationController] pushViewController:locationSearchViewController animated:YES];
[locationSearchViewController release];
Представление поиска содержит UISearchBar с включенной кнопкой отмены.Если пользователь нажимает кнопку отмены, приложение вылетает с objc_exception_throw.Консоль отображает ...
2011-02-06 22: 05: 43.960 JetLogger [2381: 207] * Ошибка подтверждения в - [UISearchDisplayController setActive: animated:],/SourceCache/UIKit_Sim/UIKit-1447.6.4/UISearchDisplayController.m:589
Однако, если пользователь касается элемента в табличном представлении (результаты поиска), я закрываю поисковое представление и тамэто не сбой.Я не могу понять, почему разница, поскольку я выкидываю представление поиска с тем же кодом ...
В LocationSearchViewController ...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
if ([self.delegate respondsToSelector:@selector(locationSearchViewDidDismiss:withLocation:)]) {
[self.delegate locationSearchViewDidDismiss:self withLocation:[tableView cellForRowAtIndexPath:indexPath].textLabel.text];
}
}
- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar{
if ([self.delegate respondsToSelector:@selector(locationSearchViewDidDismiss:withLocation:)]) {
[self.delegate locationSearchViewDidDismiss:self withLocation:@"No results found"];
}
}
В делегате ...
- (void)locationSearchViewDidDismiss:(LocationSearchViewController *)controller withLocation:(NSString*)location{
if((location != @"") && (location != @"No results found")){
//update the table data
[myTableView reloadData];
}
[self.navigationController popViewControllerAnimated:YES];
}
Любая помощь приветствуется.
Джон