在 iOS <= 7 中,直接调用 dismissViewControllerAnimated:completion: 后,presentedViewController 会变成 nil。
在 iOS 8 中,presentedViewController 仍然指向被呈现的视图控制器,直到执行完成块。
在iOS 8中,我们不能依赖属性来确定当前顶部可见的视图控制器。在iOS 8中,警报需要呈现到一个视图控制器上(这 pose another problem)。如果我们尝试在已经呈现了视图控制器的视图控制器上呈现它们,那么它们就不会显示出来。
如果我刚刚解除了我的呈现的视图控制器,并在当前顶部可见的视图控制器上显示了一个
问题:
[self dismissViewControllerAnimated:NO completion:^{
//self.presentedViewController is nil
}];
//self.presentedViewController is nil on iOS 7, but not nil on iOS 8
在iOS 8中,我们不能依赖属性来确定当前顶部可见的视图控制器。在iOS 8中,警报需要呈现到一个视图控制器上(这 pose another problem)。如果我们尝试在已经呈现了视图控制器的视图控制器上呈现它们,那么它们就不会显示出来。
如果我刚刚解除了我的呈现的视图控制器,并在当前顶部可见的视图控制器上显示了一个
UIAlertController
(通过递归搜索最后一个),那么它当然不会显示,但会记录一个错误消息:"Warning: Attempt to present on whose view is not in the window hierarchy!"问题:
- 这是iOS 8的一个bug还是新的方式?
- 如何找到可以呈现
UIALertController
的视图控制器?
isBeingDismissed
有一定帮助。 - fabb