出于某种原因,class ReplaceSegue: UIStoryboardSegue {
override func perform() {
let storyBoard = UIStoryboard(name: "Main", bundle: nil)
let newRootView = storyBoard.instantiateViewController(withIdentifier: "WelcomeViewController") as! WelcomeViewController
sourceViewController.navigationController?.setViewControllers([newRootView], animated: true)
}
}
与
viewDidLoad()
在我的应用中的fatal error: unexpectedly found nil while unwrapping an Optional value
中设置用户界面后,从另一个视图控制器中显示:
authViewController
其他视图控制器:
//authViewController
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
authState.addTarget(self, action: #selector(authStateChanged), for: .valueChanged)//<-- The place where it crashes
emailInput.addTarget(self, action: #selector(emailPasswordTextChanged), for: .editingChanged)
passwordInput.addTarget(self, action: #selector(emailPasswordTextChanged), for: .editingChanged)
SignIn.addTarget(self, action: #selector(signInPressed), for: .touchUpInside)
//Set actions
infoView.layer.cornerRadius = 5
SignIn.layer.cornerRadius = 5
//UI setup
}
如果你知道,有人可以告诉我它发生了什么以及为什么会发生?
答案 0 :(得分:6)
而不是像ViewController
那样展示
self.present(authViewController(), animated: true, completion: nil)
在实例化后尝试展示ViewController
let storyBoard = UIStoryboard(name: storyboardname, bundle: nil)
let authVC = storyBoard.instantiateViewController(withIdentifier: viewController Identifier) as? authViewController
self.present(authVC, animated: true, completion: nil)
答案 1 :(得分:0)
我解决了这个问题:
let authVC = self.storyboard?.instantiateViewController(withIdentifier: "authVC")
self.present(authVC!, animated: true, completion: nil)