我在Swift 2中开发了一个iOS应用程序,我有一个我无法解决的问题,我认为这可能是一个bug。
当我在iOS 9中运行该应用程序时,没有问题,但当我在iOS 8中调试它时,会发生以下情况:在通知回调之后,我调用prepareforsegue(标识符),标识符是OK的,它进入新屏幕的ViewDidLoad,但它从未显示。
以下是代码:
在RegisterData.swift中:
func normalRegisterOk(){
performSegueWithIdentifier("userRegisteredSegue", sender: self)
}
为了显示segue标识符的存在,下面是故事板的两个屏幕截图:screenshot1 screenshot2
在通过normalRegisterOk并调用performSegueWithIdentifier,之后,它确实进入了相应场景的ViewController,我在viewDidLoad和viewWillAppear中放置了一个断点,然后它们都进入。
我不明白为什么这个场景没有显示在iOS 8中,而是显示在iOS 9中。这个场景只有一个标签和一个ScrollView。有谁知道问题出在哪里吗?iOS 9引入的不支持iOS 8的新功能有哪些?
谢谢
发布于 2015-11-19 18:44:10
因为视图还没有准备好,请在viewDidAppear
或viewDidLayoutSubviews
中调用它
发布于 2015-11-19 18:57:26
感谢米特利的回答,我意识到它从来没有进入过viewDidAppear,所以我开始调试,我意识到我在viewDidLayoutSubviews中调用了一个函数,我不知道为什么它被称为无限次,创建一个无限循环,而这个循环没有让屏幕显示出来。我仍然不知道为什么在iOS8而不是iOS9中会发生这种情况,但是问题已经解决了,我把这个调用转移到viewDidLoad
https://stackoverflow.com/questions/33811733
复制相似问题