写在前面:实际开发过程中,面对某一个具体功能或问题时,如果纯粹的只为解决这一难题,我们肯定有许许多多的解决方式,但是,为了达到最优的效果,我们就需要动点脑筋,好好想想了。下面我简单的讲述一下我所了解到的父子控制器的相关知识点。
说到父子控制器,我们似乎好像从未用过。父子控制器顾名思义,就是在一个控制器中添加 另一个控制器,构成父子关系。其实,我们用的UITabBarController就是一种,一个UITabBarController控制器管理多个子控制器。
下面说一下父子控制器的优点:
互为父子控制器时,若父控制器是导航控制器的自控制器,那么在互为父子控制器的子控制器中也可以使用[self.navigationController pushViewController:vc animated:YES]方法推出下一个控制器。底层实现逻辑是:首先去判断下自己是否是导航控制器的子控制器,判断父控制器是否是导航控制器的子控制器,直到没有父控制器为止,([self.parentViewController.navigationController pushViewController:vc animated:YES];)
互为父子控制器时,若父控制器是由模态推出来的控制器,那么在互为父子控制器的子控制器中也可以使用[self dismissViewControllerAnimated:YES completion:nil]方法回到上一个控制器。底层实现逻辑为:判断下当前方法调用者是否被modal,如果不是,判断父控制器是否被modal([self.parentViewController dismissViewControllerAnimated:YES completion:nil] )
父子控制器的注意点:如果A控制器的view添加到B控制器的view上,那么A控制器必须成为B控制器的子控制器