2016-02-13 3 views
0

Я работаю над авторизацией на основе учетных записей google для своего приложения. У меня есть вид настроек, который содержит следующий код:Как я могу переключиться на другой viewController в моем быстром приложении, когда пользователь нажимает кнопку?

import UIKit 
import Google 

class Settings: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     let background = CAGradientLayer().greenBlue() 
     background.frame = self.view.bounds 
     self.view.layer.insertSublayer(background, atIndex: 0) 
    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


    @IBAction func didTapSignOut(sender: AnyObject) { 

     GIDSignIn.sharedInstance().signOut() 

    } 

} 

и в gui у меня есть кнопка. Когда пользователь нажимает на него, сеанс уничтожается этим вызовом: GIDSignIn.sharedInstance().signOut(). Но до сих пор ничего не происходит, и пользователь все еще находится в меню настроек. Я хочу перенести его в свой ViewController, содержащий форму входа в систему.

Я пытался добавить следующий код:

let sb = UIStoryboard(name: "Main", bundle: nil) 
if let tabBarVC = sb.instantiateViewControllerWithIdentifier("TabController") as? TabController { 
window!.rootViewController = tabBarVC 
} 

но тогда window нерешенным. Как мне это сделать?

+0

Пожалуйста, разместите структуру раскадровки, чтобы я мог вам помочь. – Mihado

+0

Проверьте мой подробный ответ на вопрос о том, почему объект окна не разрешен. – Mihado

ответ

1

В раскадровке создайте segue из «ViewController» «Настройки» в «TabController» и установите его идентификатор в «settingsToTabController». Затем используйте код self.performSegueWithIdentifier("settingsToTabController", sender: self) в функции didTapSignOut. У меня нет большого опыта в этом, так что это может быть не лучший способ сделать это, но он отлично работает для меня.

1

Если вы хотите сделать это оригинальным способом, который вы опубликовали, используя переменную window, вам необходимо захватить экземпляр экземпляра этого окна из вашего делегата. Вы можете получить его, сделав let window = UIApplication.sharedApplication().delegate?.window!, а затем установите для него UIStoryboard так же, как в вашем коде выше. Теперь ваш объект window не будет решен.

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