2016-05-22 5 views
1

У меня есть проект Swift, в котором у меня есть панель Controller Scene, и я хотел бы добавить сцену контроллера вида, чтобы действовать как «сцена входа», когда пользователь зарегистрирован, я хочу переключиться вид на сцену контроллера панели вкладок.Изменить вид в коде swift

Я внедрил логин facebook, поэтому у меня есть метод, который вызывается, когда логин завершен. я это сделал:

func loginDone(){ 
    let vc = self.storyboard?.instantiateViewControllerWithIdentifier("dashboardScreen") as! UITabBarController 
    self.presentViewController(vc, animated: true, completion: nil) 
} 

Но этот код приносит мне эту ошибку:

Attempt to present <UITabBarController: 0x7f87a37e8550> on <Project.LoginViewController: 0x7f87a352fca0> whose view is not in the window hierarchy! 

Что я должен делать?

Спасибо!

+2

Откуда вы вызываете этот метод? Вы не должны вызывать его из методов init, viewDidLoad и других, которые вызывается перед представлением. – Avt

+0

Я звонил из viewdidload, теперь я вижу ошибку. Где я должен это назвать? –

+2

Позвоните, например, из viewDidAppear. – Avt

ответ

0

Позвоните в viewDidAppear(), таким образом вы можете быть уверены, что вид входа в систему является частью иерархии представлений приложения.

Необходимо, чтобы контроллер представления отображался в иерархии представлений приложения. Смотрите раздел «Реагирование на просмотр событий» в UIViewController Class Reference

Если Вам необходима дополнительная информация о работе с методами viewDidLoad зрения контроллера вы можете посмотреть на View Controller Programming Guide

+0

Вы можете проголосовать, а не добавить комментарий? –

0

Вы не должны вызывать loginDone от инициализации, и другие, которые являются вызывается перед представлением. Вызовите его из viewDidAppear.

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