有没有办法知道UIViewController是否已经以模态方式呈现和解散?

时间:2011-09-05 07:11:03

标签: ios

有没有办法知道UIViewController是否已经以模态方式呈现和解散?

类似的东西:

  • hasBeenPresentedModally
  • hasBeenDismissedModally

感谢

2 个答案:

答案 0 :(得分:9)

内置任何内容,但视图控制器可以在收到viewDidAppear和/或viewWillDisappear时检查是否有parentViewController,因为每Apple's documentation(重点已添加) ):

  

父视图控制器与导航,标签栏和模态相关   查看控制器层次结构。在每个层次结构中,父级   是负责显示当前视图控制器的对象。   如果您将视图控制器用作独立对象 - 则不是   作为视图控制器层次结构的一部分 - 此属性中的值为   为零。

如果有,那么它可以设置合适的标志以供将来参考。

请注意,以模态呈现不同于真正的模态。例如,在iPad上你可能会将一个控制器放在UIPopoverController内,这样控制器就不会以模态方式呈现,但是它可能会以模态方式呈现另一个控制器。所以第二个控制器是以模态方式呈现的,但本身并不是模态对话,因为 - 如果程序以其他方式适当设置 - 用户可以完全忽略弹出窗口。

答案 1 :(得分:6)

检查您的UIViewController的parentViewController属性是否为nil。 如果该属性为nil,那么它将被解除,否则会被呈现。

注意:UITableViewController的childViewController的parentViewController属性也不是nil,你还应该确保parentViewController不是UITableViewController。