寫在前面:實際開發過程中,面對某一個具體功能或問題時,如果純粹的只為解決這一難題,我們肯定有許許多多的解決方式,但是,為了達到最優的效果,我們就需要動點腦筋,好好想想了。下面我簡單的講述一下我所了解到的父子控制器的相關知識點。
說到父子控制器,我們似乎好像從未用過。父子控制器顧名思義,就是在一個控制器中添加 另一個控制器,構成父子關系。其實,我們用的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控制器的子控制器