我已经设置了一个像这样的UISearchController:
SearchTableViewController *searchView = [[SearchTableViewController alloc]initWithNibName:@"SearchTableViewController" bundle:nil];
UISearchController *searchController = [[UISearchController alloc]initWithSearchResultsController:searchView];
[searchController setDefinesPresentationContext:YES];
searchController.delegate = searchView;
searchController.searchResultsUpdater = searchView;
[self presentViewController:searchController animated:YES completion:nil];
当我试图从搜索控制器推送一些东西时:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
DetailTableViewController *seeAll = (DetailTableViewController *) [storyboard instantiateViewControllerWithIdentifier:@"DetailTableViewController"];
NSLog(@"self.navigationController = %@", self.navigationController);
[self.navigationController pushViewController:seeAll animated:YES];
它没有用。由于NSLog,我打印出null。有人可以帮忙吗?
答案 0 :(得分:0)
由于缺少self
(SearchTableViewController)的导航堆栈,因此打印出null。似乎没有在故事板中指定UINavigationController。你的main.storyboard文件是什么?使用故事板的可能配置之一如下所示:
查看Apple的this示例。它具有类似的功能。 附:我不确定你是否需要这样的SearchController:
[self presentViewController:searchController animated:YES completion:nil];
答案 1 :(得分:0)
您需要使用另一个NavigationController实例化您的searchController
SearchTableViewController *searchView = [[SearchTableViewController alloc]initWithNibName:@"SearchTableViewController" bundle:nil];
UISearchController *searchController = [[UISearchController alloc]initWithSearchResultsController:searchView];
[searchController setDefinesPresentationContext:YES];
searchController.delegate = searchView;
searchController.searchResultsUpdater = searchView;
UINavitagionController * navCont = [[UINavigationController alloc]initWithRootViewController: searchController];
[self presentViewController:navCont animated:YES completion:nil];