override func viewDidLoad() {
super.viewDidLoad()
let str = self.appDefaults.string(forKey: Constants.init().userBirthDayStrKey)
print(str!)
if nil != self.appDefaults.string(forKey: Constants.init().userBirthDayStrKey) {
print("performSegue")
self.performSegue(withIdentifier: "goToTimeViewScreen", sender: self)
self.dismiss(animated: true, completion: nil)
}
}
我想在viewDidLoad方法中打开另一个ViewController,但是它不起作用, 代码有什么问题?如何在不单击一个按钮的情况下打开另一个ViewController?
答案 0 :(得分:1)
好吧,让我们考虑一下您的代码:
override func viewDidLoad() {
因此,您无法从viewDidLoad
执行隔离。您的视图控制器尚未在界面中;没有什么可以隔离的。您必须等到viewDidAppear
之类的东西。
if nil != self.appDefaults.string(forKey: Constants.init().userBirthDayStrKey) {
因此,如果是 nil
,则什么也不会发生。我们怎么知道是不是?您还没有告诉我们。
self.performSegue(withIdentifier: "goToTimeViewScreen", sender: self)
因此,如果没有带有该标识符的该视图控制器的命令,将不会发生任何事情。我们怎么知道是否存在?
self.dismiss(animated: true, completion: nil)
那行在这里做什么?如果segue是呈现(模态)segue,它将取消它,并且不会发生任何事情。
因此,有很多原因可能什么也没发生。