我有两个ViewControllers,StartVC和MainVC。当应用程序启动时,我使用模态Segue从StartVC移动到MainVC。
self.performSegueWithIdentifier("StartToMain", sender: self)
MainVC然后显示一个Map,加载用户位置在地图上显示它并放大并在其上创建一些注释并显示AdMob横幅。一切顺利。
然后当用户点击后退按钮时,使用以下方法解除segue:
self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
现在,当用户点击按钮并再次触发模态segue并且用户再次访问MainVC时,地图仍然显示用户位置但不放大,不加载任何注释,不设置区域和admob横幅是没装。
我对此感到困惑。我已经检查过MainVC的ViewDidLoad和ViewDidAppear也是第二次触发,代码执行甚至到达了应该放大到map等的函数但它没有生效。有没有人有任何想法,可能是什么导致这个?
我还应该提到第二次用户访问MainVC时,AdMob尝试显示插页式广告时会抛出以下错误:
警告:尝试出示< GADInterstitialViewController: 0x139b07e20> on< myApp.MainVC:0x135672f20>谁的观点不在 窗口层次结构!
此外,目前,执行所有缺失功能的函数调用都在locationManager didUpdateLocations
方法中。如果我把它移到例如viewDidAppear
,它就可以了。
答案 0 :(得分:0)
你可以尝试一些事情。
首先:确保您在viewDidAppear方法中进行所有导航。您不应该在ViewDidLoad或ViewWillAppear方法中调用另一个VC。
第二:您可以使用展开segue导航回StartVC。在故事板上创建展开segue,然后以编程方式调用它:
self.performSegueWithIdentifier("UnwindSegue", sender: self)
You can find more info about unwind segues here
希望它有所帮助。