注销按钮显示登录视图控制器-Swift 5

注销按钮显示登录视图控制器-Swift 5,swift,delegates,Swift,Delegates,嗨,我对斯威夫特有点陌生,我搞不懂这个。我试图创建一个注销按钮,将用户带到登录页面。我使用了以下两种方法,但第一种方法不起任何作用,第二种方法抛出致命错误:在隐式展开可选值时意外发现nil,它使用自定义按钮引用代码: //this one doesn't do anything @objc func SignOut(){ let vc = self.storyboard?.instantiateViewController(identifier: "LoginViewControll

嗨,我对斯威夫特有点陌生,我搞不懂这个。我试图创建一个注销按钮,将用户带到登录页面。我使用了以下两种方法,但第一种方法不起任何作用,第二种方法抛出
致命错误:在隐式展开可选值时意外发现nil,它使用
自定义按钮引用代码:

//this one doesn't do anything 
@objc func SignOut(){

    let vc = self.storyboard?.instantiateViewController(identifier: "LoginViewController") as! LoginViewController
    let appDelegate = UIApplication.shared.delegate
    appDelegate?.window??.rootViewController = vc
}


//this one is throwing an error 
let vc = CustomViewController()
self.present(vc, animated: true, completion: nil)



//the Fatal error refers to this code
override func viewDidLoad() {
    super.viewDidLoad()
    self.customButton.addTarget(self, action: #selector(customButtonPressed), for: .touchUpInside)
}
另外,我想知道AppDelegate是正确的方法还是应该使用SceneDelegate。任何帮助都将不胜感激

试着这样做

@objc func SignOut(){

    let vc = self.storyboard?.instantiateViewController(identifier: "LoginViewController") as! LoginViewController
    self.view.window?.rootViewController = vc
}
试着这样做

@objc func SignOut(){

    let vc = self.storyboard?.instantiateViewController(identifier: "LoginViewController") as! LoginViewController
    self.view.window?.rootViewController = vc
}
请确保标识符与此
viewController


请确保标识符与此
viewController

的故事板内部的标识符匹配。在第一种情况下,我认为您的窗口为零。。这就是为什么它不起作用的原因在第一种情况下,我想你的窗户是空的。。这就是为什么它不起作用的原因!非常感谢你!很好!非常感谢你!