模态视图控制对象

  视图控制对象有一个名为modalViewController的属性。当视图A以模态形式显示另一个视图B时,A的modalViewController属性会保存执行B的指针。以模态形式显示的视图控制对象B有一个名为parentViewController的指针指向显示它的那个视图控制对象A。关闭视图控制对象时会用到这些属性,如图14-6所示。

  

  当视图控制对象收到dismissModalViewControllerAnimated:消息时,会将它的modalViewController的视图移除窗口,释放相应地视图控制对象,并将modalViewController属性赋值为nil。这里parentViewController属性也会被赋值为nil。

  UIViewController对象收到dismissModalViewControllerAnimated:消息后,会检查自己的modalViewController属性,如果值为nil,就会将该消息转发给自己的parentViewController。

ps.parentViewController的真实含义是:负责显示当前视图控制对象的对象。

如:

将UIViewController对象A,加入UINavigationController对象B后,B将负责显示A,所以A的parentViewController是它的容器对象B。

将UIViewController对象C,加入UINavigationController对象D后,D将负责显示C,所以C的parentViewController是它的容器对象D。

向C发送presentModalViewController:animated:消息,以模态形式显示B后,负责显示B的其实是包含C的容器对象D(这是有AppKit库内部决定的)。因此,B的parentViewController是D

原文地址:https://www.cnblogs.com/benbenzhu/p/3584220.html