当用户按下按钮时,如何在我的swift应用程序中切换到另一个viewController?

时间:2016-02-13 16:52:45

标签: ios swift google-signin

我正在基于谷歌帐户授权我的应用程序。我有一个设置视图,其中包含以下代码:

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尚未解决。我该怎么办?

2 个答案:

答案 0 :(得分:1)

在故事板中,从"设置"创建一个segue。 ViewController到" TabController"并将其标识符设置为" settingsToTabController"。然后使用self.performSegueWithIdentifier("settingsToTabController", sender: self)函数中的代码didTapSignOut。我没有这方面的经验,所以这可能不是最好的方法,但它对我来说很好。

答案 1 :(得分:1)

如果您想使用window变量发布原始方式,则需要从代理中获取该窗口实例的实例。您可以通过执行window = UIApplication.sharedApplication().delegate?.window!,然后像上面的代码中那样设置UIStoryboard来获取它。现在,您的window对象将无法解析。