2011-09-05 26 views

回答

9

没有什么建的,但一个视图控制器可以在接收到viewDidAppear和/或viewWillDisappear检查它是否有parentViewController,因为每Apple's documentation(强调):

父视图控制器有导航相关,标签栏和模式 视图控制器层次结构。在每个这些层次结构中,父代 是负责显示当前视图控制器的对象。 如果您将视图控制器用作独立对象(即不是 作为视图控制器层次结构的一部分),则此属性中的值为 nil。

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

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

+1

'viewWillDisappear'太早; 'viewDidDisappear'适用于检查父节点是否被清空,例如,弹出一个导航堆栈后。 – qix

6

检查,如果你的UIViewController的parentViewController属性nil与否。 如果财产是nil那么它被驳回,否则它被提交。

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

相关问题