【发布时间】:2016-04-07 20:06:00
【问题描述】:
我有两个 ViewController,StartVC 和 MainVC。当应用程序启动时,我使用 Modal Segue 从 StartVC 移动到 MainVC。
self.performSegueWithIdentifier("StartToMain", sender: self)
MainVC 然后显示一个地图,加载用户位置并将其显示在地图上并放大它并在其上创建一些注释并显示 AdMob 横幅。一切正常。
然后,当用户点击后退按钮时,segue 会被关闭:
self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)
现在当用户点击一个按钮并且再次触发模态segue并且用户再次进入MainVC时,地图仍然显示用户位置但不放大,不加载任何注释,不设置区域并且admob横幅是未加载。
我对此感到困惑。我已经检查过 MainVC 的 ViewDidLoad 和 ViewDidAppear 是否也在第二次触发,代码执行甚至达到了应该放大地图等的功能,但它没有生效。有谁知道,这可能是什么原因造成的?
我还应该提到,当用户第二次访问 MainVC 时,AdMob 尝试显示插页式广告时会抛出以下错误:
警告:尝试呈现 上的 0x139b07e20>,其视图不在 窗口层次结构!
此外,目前,执行所有缺失功能的函数调用位于 locationManager didUpdateLocations 方法中。例如,如果我将它移到viewDidAppear,它就可以工作。
【问题讨论】:
-
您是否使用导航控制器来执行此操作?或者它只是一个视图控制器和另一个?你是模态展示还是使用推送?
-
我没有使用导航,而是以模态方式呈现,因为我喜欢水平翻转效果。
-
Hrm... 您可以尝试嵌入 Nav 控制器,以查看事情是否表现得更合适。我的猜测是这与对
presentingViewController的引用有关,这对我来说充其量是不可靠的。
标签: xcode swift uiviewcontroller segue