Swift,Modal Segue和ViewController问题

时间:2016-04-07 20:06:01

标签: xcode swift uiviewcontroller segue

我有两个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,它就可以了。

1 个答案:

答案 0 :(得分:0)

你可以尝试一些事情。

首先:确保您在viewDidAppear方法中进行所有导航。您不应该在ViewDidLoad或ViewWillAppear方法中调用另一个VC。

第二:您可以使用展开segue导航回StartVC。在故事板上创建展开segue,然后以编程方式调用它:

self.performSegueWithIdentifier("UnwindSegue", sender: self)

You can find more info about unwind segues here

希望它有所帮助。