在iOS 8中使用presentViewController:animated:completion:时,presentingViewController为空

36

想知道是否有其他人最近遇到过这个问题...

对于我的一个视图控制器,在 iOS 8 上,调用 presentViewController:animated:completion: 后,呈现的视图控制器的 self.presentingController 为 nil。在 iOS7 上没有问题,并且在另一个视图控制器上也不会发生。

documentation 表示,只要呈现的视图控制器是以模态方式呈现的,它就应该被设置。鉴于在 iOS 7 上可以正常工作,这可能是 iOS 8 的一个 bug 吗?

我已经能够通过使用视图容器来解决它,但如果有人之前看到过这个问题并知道触发此行为的根本原因,那就太好了。

谢谢


你在哪里记录了这个。它在viewWillAppear或viewDidAppear中不是null,但在viewDidLoad中是。我不记得这是否与iOS 7有所不同。 - rdelmar
1
所提供的控制器是第三方控制器,我无法访问并逐步执行(FBFriendPickerViewController)。当我在呈现控制器的代码断点后调用presentViewController:animated:completion:时,在该行之后的断点处,我将其视为nil。 - Ken Ko
1个回答

54

在iOS 8中遇到了类似的问题,当在viewDidLoad中检查presentingController时,该值为nil。

当调用viewDidLoad时,不能保证视图控制器层次结构已加载到导航树中。将逻辑移动到稍后的阶段(例如:viewWillAppear)应该解决该问题,因为此时presentingController应该已经被加载。


2
这对我很有帮助。我需要在一个函数中指向 presentingViewController。我在 viewDidAppear 中创建了一个属性,访问并存储了一个指针到 presentingViewController 以便稍后使用。 - Pouria Almassi
这让我免去了很多抓狂的时间 - 谢谢!我想这个值会在viewdidload中设置。 - Nostradamus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接