show()视图控制器不起作用

时间:2018-02-20 14:52:23

标签: ios swift

如果不是,我会尝试对我的应用的用户进行身份验证。我首先读取UserDefaults中保存的值以了解它们是否已登录,如果没有,我想显示ViewController以允许它们登录。

但无论如何,LogInViewController不会显示,这是我的代码:

import UIKit
import MapKit

class MainViewController: UIViewController, CLLocationManagerDelegate {

override func viewDidLoad() {
    super.viewDidLoad()

    if(!UserDefaults.standard.bool(forKey: "userIsConnected")){
         let LogVC = self.storyboard?.instantiateViewController(withIdentifier: "LogInViewController") as! LogInViewController
         show(LogVC, sender: self)
    }
}

我也试过没有' if'条件,它不再起作用了

编辑: 我也尝试过presentVC(),我有错误"尝试在视图不在窗口层次结构中显示"

感谢您的帮助

1 个答案:

答案 0 :(得分:3)

您正尝试登录MainViewController。您应该尽可能避免在视图控制器中管理登录。如果在AppDelegate中进行管理,则登录效果会更好。

将此代码添加到AppDelegate.swift中的didFinishLaunchingWithOptions

if !UserDefaults.standard.bool(forKey: "userIsConnected") {
      let storyboard = UIStoryboard(name: "Main", bundle: Bundle.main)
      let loginViewController = storyboard.instantiateViewController(withIdentifier: "LogInViewController")
      window?.makeKeyAndVisible()
      window?.rootViewController?.present(loginViewController, animated: true, completion: nil
}

确保您可以访问UserDefaults