我有一个简单的应用程序,我想在用户首次登录应用程序时显示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")
}
}
}
我认为有足够的代码可以在那里进行调查。如果您需要,可以上传更多内容。
答案 0 :(得分:1)
我不认为viewWillAppear就足够了。 我认为只有在调用viewDidAppear后才能显示UI。尝试在那里打电话。
答案 1 :(得分:0)
amahfouz的回答是完全正确的。了解viewDidLoad,viewWillAppear和viewDidAppear的层次结构以及此函数在viewDidAppear而非viewWillAppear中的工作原理非常重要。花5分钟这样做,当你开始构建更大的应用程序时,它会帮助你很多。