如何在 iOS 7+ 中使用当前 ViewController 设置 PresentingViewController

Posted

技术标签:

【中文标题】如何在 iOS 7+ 中使用当前 ViewController 设置 PresentingViewController【英文标题】:How to set PresentingViewController with current ViewController in iOS 7+ 【发布时间】:2014-12-15 14:00:22 【问题描述】:

在我的 ios 7+ 应用中,我使用的是最新版本的 Harpy,它会执行应用版本检查,如果 App Store 中有我的应用的新版本可用,它会发出警报。

由于我的应用程序的结构,我在调试器中遇到了这个问题:

Attempt to present <UIAlertController: 0x144538530> on <DCLoginViewController: 0x14460c1a0> whose view is not in the window hierarchy!

这是因为 harpy 是在 AppDelegate 中配置的,并且有一个参数定义了presentingViewController:

[[Harpy sharedInstance] setPresentingViewController:_window.rootViewController];

我相信问题的出现是因为我的应用程序检查用户是否已经登录,如果是这样,它不会显示 DCLoginViewController,而是跳转到下一个视图“LoadingViewController”。

如何将presentingViewController 设置为此LoadingViewController 甚至是执行时当前屏幕上的ViewController?

感谢您的帮助。

【问题讨论】:

【参考方案1】:

您不必在AppDelegate 中启动Harpy。您可以在 LoadingViewController 加载后启动它。仅建议在 AppDelegate 中启动它,因为它的想法是在应用程序加载后立即显示警报。这更像是一个 UX 的事情。

【讨论】:

以上是关于如何在 iOS 7+ 中使用当前 ViewController 设置 PresentingViewController的主要内容,如果未能解决你的问题,请参考以下文章

iOS 7 到 iOS 8 中当前位置纬度和经度的不同行为

iOS - 带有动画的程序化模态segue(例如翻转)

如何在 iOS 7 中为按钮添加约束?

使用 iOS 7 SDK 的随机 iOS 6 崩溃

如何在 iOS 中高效地使用图像制作动画

带有 UINavigationController 的 iOS 7 自定义当前转换