有没有办法知道UIViewController是否已经以模态方式呈现和解散?
类似的东西:
感谢
答案 0 :(得分:9)
内置任何内容,但视图控制器可以在收到viewDidAppear
和/或viewWillDisappear
时检查是否有parentViewController
,因为每Apple's documentation(重点已添加) ):
父视图控制器与导航,标签栏和模态相关 查看控制器层次结构。在每个层次结构中,父级 是负责显示当前视图控制器的对象。 如果您将视图控制器用作独立对象 - 则不是 作为视图控制器层次结构的一部分 - 此属性中的值为 为零。强>
如果有,那么它可以设置合适的标志以供将来参考。
请注意,以模态呈现不同于真正的模态。例如,在iPad上你可能会将一个控制器放在UIPopoverController
内,这样控制器就不会以模态方式呈现,但是它可能会以模态方式呈现另一个控制器。所以第二个控制器是以模态方式呈现的,但本身并不是模态对话,因为 - 如果程序以其他方式适当设置 - 用户可以完全忽略弹出窗口。
答案 1 :(得分:6)
检查您的UIViewController的parentViewController
属性是否为nil
。
如果该属性为nil
,那么它将被解除,否则会被呈现。
注意:UITableViewController的childViewController的parentViewController
属性也不是nil
,你还应该确保parentViewController不是UITableViewController。