如何从UISearchController推送VC

时间:2016-02-15 19:32:42

标签: ios objective-c uinavigationcontroller uisearchcontroller

我已经设置了一个像这样的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。有人可以帮忙吗?

这是我的IB档案enter image description here

2 个答案:

答案 0 :(得分:0)

由于缺少self(SearchTableViewController)的导航堆栈,因此打印出null。似乎没有在故事板中指定UINavigationController。你的main.storyboard文件是什么?使用故事板的可能配置之一如下所示:

enter image description here

查看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];