iOS 视图控制器模态

iOS 视图控制器模态_第1张图片
heyu.jpg

    当同一个视图控制器,在同一个时间,只能present一个另外的视图控制器,如果当前的VC已经present了,再次present一个VC时,就会提示失败;如果想继续present,就必须将原来present的控制器dismiss。

  控制器的两个可能很多人都没注意的两个属性presentedViewController和presentingViewController;他们分别是被present的控制器和正在presenting的控制器。比如说, 控制器A和B,[A presentViewController B animated:YES completion:nil]; 那么A相对于B就是presentingViewController,B相对于A是presentedViewController,即

                B.presentingViewController = A;

                 A.presentedViewController = B;

if(self.presentingViewController.presentingViewController) {

                 self.presentingViewController.view.alpha=0; 

 [self.presentingViewController.presentingViewController dismissViewControllerAnimated:YES completion:nil];

}else{

         [self  dismissViewControllerAnimated:YES completion:nil];

}

可以作为退出当前控制器,

比如说,现在有个C界面,C界面被显示出来,可能有两种情况,一是modal出来的,另外一种是push出来的,这时候就可以通过当前界面对象的presentingViewController属性来判断到底属于哪种情况,如果是nil,表示是UINavigationController对象push过来的,如果不是则是modal过来的。

你可能感兴趣的:(iOS 视图控制器模态)