2015-11-19 5 views
1

Я создал пользовательскую кнопку, на которой я сосредоточился на моем контроллере TabBar. Я хочу использовать его для представления контроллера вида, прикрепленного к контроллеру навигации. Но я продолжаю получать ошибки, и ошибка говорит, что я не могу нажать. Принимая во внимание, я не толкаю. Я представляюПредставление навигации crontroller от контроллера TabBar

func showView() { 
    print("We are here ohhh") 
    let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("Dashboard") 

    //Creating a navigation controller with viewController at the root of the navigation stack. 
    let navController = UINavigationController(rootViewController: viewController!) 
    self.navigationController?.presentViewController(navController, animated: true, completion: nil) 
    //self.presentViewController(navController, animated:true, completion: nil) 
} 

The Error

Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Pushing a navigation controller is not supported' 
+1

бы вид раскадровки контроллер "Dashboard", случается, 'UINavigationController 'также? В этом случае вам не нужно создавать экземпляр нового 'UINavigationController', и вместо этого вы можете просто представить' viewController' –

+2

Обратите внимание, что вы, вероятно, должны использовать 'self.presentViewController' (версия, которую вы закомментировали) –

+0

Большое спасибо , Работает отлично. Что делать, если я хочу отклонить Modal View? –

ответ

2

Предполагая, контроллер представления раскадровки с идентификатором "Dashboard" является UINavigationController, вы можете просто представить его напрямую:

func showView() { 
    let viewController = self.storyboard?.instantiateViewControllerWithIdentifier("Dashboard") 
    presentViewController(viewController, animated: true, completion: nil) 
} 

Уволить (от представления вида контроллера):

dismissViewControllerAnimated(true, completion: {}); 

Уволить (от вида контроллера будет представлен):

self.presentingViewController.dismissViewControllerAnimated(true, completion: {}); 
-2

Вы должны сделать это вместо того, чтобы:

let navController = UINavigationController(rootViewController: viewController!) 
navController.setViewControllers([viewController], animated: true) 
self.presentViewController(navController, animated: true, completion: nil) 
+1

Это исправляет проблему с 'presentViewController', но я уверен, что использование' setViewControllers' не будет иметь значения, и поэтому это не устранит проблему OP. –

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