视图控制对象有一个名为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