1

У меня есть приложение Tab Bar, которое показывает несколько вкладок. В случае уведомления я хочу, чтобы пользователь был направлен на контроллер представления с возможностью нажатия «Назад». Когда мое приложение было только приложение навигации контроллер, я использовал этот код в моем AppDelegate:Push ViewController на AppDelegate из приложения TabBar

UIStoryboard *mainStoryboard = self.window.rootViewController.storyboard; 
DetailViewController *detailViewController = (DetailViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"detailViewController"]; 
[(UINavigationController*)self.window.rootViewController pushViewController:detailViewController animated:NO]; 

Этот код используется для работы хорошо, пока я не конвертируются мое приложение, чтобы быть Tab Bar. Похоже, что «self.window.rootViewController» больше не имеет типа «UINavigationController», и поэтому вызов «pushViewController» генерирует метод высказывания исключений. Любой способ сделать эту работу над приложением панели вкладок?

Благодаря

+0

Вы хотите, чтобы этот новый диспетчер представлений перекрывал панель вкладок? Что вы хотите сделать с помощью кнопки «Назад»? – Joel

+0

Да. Это новостное приложение. Если пользователь проверит уведомление, я хотел бы открыть контроллер просмотра, непосредственно отображающий новость. Затем, нажимая назад, я хочу, чтобы он вернулся к обычному виду табуляции. – bashan

ответ

2

Вы должны представить свой контроллер уведомления как модальный (presentViewController:animated:completion:), а внутри этого контроллера вы предоставите способ закрыть его, вероятно, кнопки на верхней панели.

EDIT: Спасибо за ответ Димитрия, я смог идти по правильному пути. Мне просто нужно было сделать небольшой трюк, чтобы сохранить верхнюю панель навигации и нижнюю панель инструментов. Я сделал это, используя экземпляр «UINavigationController». Вот код:

UIStoryboard *mainStoryboard = self.window.rootViewController.storyboard; 
DetailViewController *detailViewController = (DetailViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"detailViewController"]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:detailViewController]; 
navigationController.navigationBar.tintColor = [UIColor blackColor]; 
navigationController.toolbar.tintColor = [UIColor blackColor]; 
[self.window.rootViewController presentViewController:navigationController animated:YES completion:NULL]; 
Смежные вопросы