IOS呈现PageViewController

时间:2017-01-24 00:30:16

标签: ios swift uipageviewcontroller

我有一个简单的应用程序,我想在用户首次登录应用程序时显示PageViewController。一旦他们查看了教程,在下一次加载时,PageViewController就不会显示。

但是我收到以下消息。

2017-01-24 00:20:32.620321 Infinity Toolkit[591:83298] Warning: Attempt to present <Infinity_Toolkit.PageViewController: 0x10e026000> on <Infinity_Toolkit.ViewController: 0x10dd0b030> whose view is not in the window hierarchy!    

UIViewController - 默认控制器

 override func viewWillAppear(_ animated: Bool) {
    displayWalkthroughs()
}

显示工作量功能

func displayWalkthroughs()
{
    // check if walkthroughs have been shown
    let userDefaults = UserDefaults.standard
    let displayedWalkthrough = userDefaults.bool(forKey: "DisplayedWalkthrough")

    // if we haven't shown the walkthroughs, let's show them
    if !displayedWalkthrough {
        let storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
        // instantiate neew PageVC via storyboard
        if let pageViewController = storyboard.instantiateViewController(withIdentifier: "PageViewController") as? PageViewController {
            self.present(pageViewController, animated: true, completion: nil)
         print("tried")

        }
    }
}

我认为有足够的代码可以在那里进行调查。如果您需要,可以上传更多内容。

2 个答案:

答案 0 :(得分:1)

我不认为viewWillAppear就足够了。 我认为只有在调用viewDidAppear后才能显示UI。尝试在那里打电话。

答案 1 :(得分:0)

amahfouz的回答是完全正确的。了解viewDidLoad,viewWillAppear和viewDidAppear的层次结构以及此函数在viewDidAppear而非viewWillAppear中的工作原理非常重要。花5分钟这样做,当你开始构建更大的应用程序时,它会帮助你很多。