有没有办法知道一个UIViewController是否已经被模态地呈现和排除?有没有办法知道一个UIViewController是否已经被模态地呈现和排除?
喜欢的东西:
- hasBeenPresentedModally
- hasBeenDismissedModally
感谢
有没有办法知道一个UIViewController是否已经被模态地呈现和排除?有没有办法知道一个UIViewController是否已经被模态地呈现和排除?
喜欢的东西:
感谢
没有什么建的,但一个视图控制器可以在接收到viewDidAppear
和/或viewWillDisappear
检查它是否有parentViewController
,因为每Apple's documentation(强调):
父视图控制器有导航相关,标签栏和模式 视图控制器层次结构。在每个这些层次结构中,父代 是负责显示当前视图控制器的对象。 如果您将视图控制器用作独立对象(即不是 作为视图控制器层次结构的一部分),则此属性中的值为 nil。
如果它有,那么它可以设置合适的标志供将来参考。
请注意,模态地呈现不同于真正的模态。例如,在iPad上,您可能会将一个控制器放置在UIPopoverController
的内部,这样控制器就不会以模态方式呈现,但它可能会在另一个模式上呈现另一个控制器。所以第二个控制器是以模态方式呈现的,但本身并不是一种模态对话,因为如果程序设置合适,用户可以完全忽略弹窗。
检查,如果你的UIViewController的parentViewController
属性nil
与否。 如果财产是nil
那么它被驳回,否则它被提交。
注意:UITableViewController的childViewController的parentViewController
属性也不是nil
,您还应该确保parentViewController不是UITableViewController。
'viewWillDisappear'太早; 'viewDidDisappear'适用于检查父节点是否被清空,例如,弹出一个导航堆栈后。 – qix