У меня есть TableViewController, SearchResultsController и WebViewController. Когда я нажимаю на ячейку в TableViewController, он толкает WebViewController, открывая URL-адрес, связанный с ячейкой.Невозможно нажать на поискРезультатыController
В TableViewController есть UISearchController, который фильтрует результаты в SearchResultsController, однако, когда ячейка нажата в SearchResultsController, WebViewController не будет нажата.
Вот код didSelectRowAtIndexPath для SearchResultsController:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
WebViewController *webViewController = [[WebViewController alloc] init];
NSString *extensionURL = (self.searchResults[indexPath.row])[@"url"];
NSURL *baseURL = [NSURL URLWithString:@"http://www.baseurl.com"];
NSURL *URL = [NSURL URLWithString:extensionURL relativeToURL:baseURL];
webViewController.title = (self.searchResults[indexPath.row])[@"title"];
NSLog(@"%@", URL);
webViewController.URL = URL;
[self.navigationController pushViewController:webViewController
animated:YES];
}
Я включил NSLog, чтобы увидеть, если что-нибудь случится, когда была нажата клетка, и это делает отображение URL в консоли. Это заставляет меня думать, что проблема связана с navigationController.
В режиме онлайн кажется, что UISearchController должен быть завернут в UISearchContainerViewController, который затем должен быть помещен в navigationController. Я по-прежнему новичок в разработке приложений и не могу понять, как и где это сделать.
Я называю мой SearchResultsController в viewDidLoad моего TableViewController как так:
- (void)viewDidLoad
{
[super viewDidLoad];
SearchResultsViewController *controller = [[SearchResultsViewController alloc] initWithStyle:UITableViewStylePlain];
[self addObserver:controller forKeyPath:@"results" options:NSKeyValueObservingOptionNew context:nil];
self.searchController = [[UISearchController alloc] initWithSearchResultsController: controller];
self.searchController.searchResultsUpdater = self;
self.searchController.hidesNavigationBarDuringPresentation = NO;
self.searchController.dimsBackgroundDuringPresentation = NO;
self.searchController.delegate = self;
self.definesPresentationContext = YES;
UISearchBar *searchBar = [[UISearchBar alloc] init];
searchBar = self.searchController.searchBar;
searchBar.searchBarStyle = UISearchBarStyleMinimal;
UITextField *searchField = [searchBar valueForKey:@"_searchField"];
searchBar.barTintColor = [UIColor whiteColor];
searchBar.tintColor = [UIColor whiteColor];
self.navigationItem.titleView = searchBar;
}
Является ли это, где я должен быть вложение мой SearchResultsController?
Вы используете self.navigationController в своем первом блоке кода, связанном с SearchResultsController. Убедитесь, что navigationController - тот, который вы хотите, и он должен работать. – Alex
Привет, Алекс, спасибо за ответ. Не могли бы вы немного рассказать о том, что вы имеете в виду в отношении self.navigationController? – ghertyish
ПоискПросмотрСвидетельствоПросмотрСоответчикНавигационный контроль отличается от диспетчера навигации TableViewController.Похоже, вы хотите использовать self.navigationController TableViewController. – Alex