使用ViewDidAppear中的标识符执行Segue无法正常工作

时间:2015-10-25 16:37:57

标签: ios swift uiviewcontroller segue viewdidappear

我有一个关于我的应用的条款和条件页面的视图,我试图在应用程序第一次打开时以模态方式显示。我知道在正确的时间调用performSegueWithIdentifier方法,但从不加载相应的视图。永远不会调用未来视图控制器中的viewDidLoad。此外,就我所知,segue标识符也能正确匹配。这导致出现黑屏空白。

Blank Screen

   override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)

    print("Here")

    if !defaults.boolForKey("hasLaunchedBefore"){

        defaults.setBool(true, forKey: "hasLaunchedBefore")
        setSettingsForFirstTime()

        self.performSegueWithIdentifier("firstTime", sender: self)

    }

}

突出显示的ViewController是segue启动的地方,它应该在另一个导航控制器上结束,从而结束条款和条件页面,它永远不会加载。顶级ViewController的导航控制器是应用程序的入口点。 Storyboard

1 个答案:

答案 0 :(得分:-1)

那是因为你的中间有导航控制器 您可以在准备segue时通过它,并在启动segue之前使视图不可见,以便直接显示条款和条件视图

override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(animated)
    self.view.hidden = true
}

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(true)

    if !defaults.boolForKey("hasLaunchedBefore"){

        defaults.setBool(true, forKey: "hasLaunchedBefore")
        setSettingsForFirstTime()

        self.performSegueWithIdentifier("firstTime", sender: self)
    }
    else { self.view.hidden = false }
}



override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "Id" {
            if let navVc = segue.destinationViewController is UINavigationController {
                if let contentVc = (self as! UINavigationController).visibleViewController {
                     //do preparation
                }
            } 
        }
   }