Swift4,IOS 12 self.performSegue无法正常工作

时间:2018-12-05 23:39:12

标签: swift segue ios12

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?

1 个答案:

答案 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,它将取消它,并且不会发生任何事情。

因此,有很多原因可能什么也没发生。