0

Я создал UISearchController так:Как Нажмите VC от 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. Может ли кто-нибудь помочь?

Это мой IB Файл enter image description here

ответ

0

Вы получаете нулевой распечатаны в результате из-за отсутствия навигационного пакета для self (SearchTableViewController). Похоже, что в вашем раскадровке не указывается UINavigationController. Каков ваш файл main.storyboard? Один из возможных конфигураций с использованием раскадровки выглядит следующим образом:

enter image description here

Проверить this пример из Apple. Он имеет аналогичную функциональность. P.S. Я не уверен, что вам нужно настоящий SearchController так:

[self presentViewController:searchController animated:YES completion:nil]; 
+0

Хорошо хорошо мой взгляд иерархия вид wanky так что будьте готовы. У меня есть контроллер навигации и VC, как показано выше, за исключением того, что VC имеет сегментированный элемент управления, который загружает два вида, например: self.asd = [[asd alloc] init]; [self.view addSubview: self.asd.view]; 'Тогда этот VC загружает еще три Xibs –

+0

@MarkBourke, можете ли вы уточнить, где вы выполняете первый мир кода, указанный в вашем вопросе? Может быть, вы можете добавить больше кода, чтобы я смог понять контекст? Что будет зарегистрировано, если вы поместите этот код: 'NSLog (@" self.navigationController =% @ ", self.navigationController);' на месте, где вы создаете UISearchController? – curious

+0

Результат журнала: self.navigationController =

0

Вам нужно создать экземпляр searchController с другим NavigationController

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]; 
+0

Это просто показывает черный экран –

Смежные вопросы