父子控制器:導航控制器,UITabBarViewController等。
父子控制器的設計原理:a控制器的View成為b控制器的子控件,那么a控制器必須成為b控制器的子控制器。否則,(1)用屬性來保存a控制器不會立刻銷毀成為全局變量,控制器沒有銷毀,可以處理事件,但是沒有成為b的子控制器是無法push modal dismiss等。(2)將b控制器添加為a控制器的子控制器,可以處理事件,也可以跳轉等。 push、modal等操作控制器和它的子控制器都可以調用。
子控制器都有一個addChildViewControllers的數組。
self.navigationController原理:首先去判斷自己是不是導航控制器的子控制器,如果不是,再去判斷父控制器是不是導航控制器的子控制器,如果是,可以拿到self.navigationController。
modal的效果是從下往上鉆出來。
//dismissViewControllerAnimated:誰調用,dismiss誰
//首先會判斷下自己是不是modal出來的,如不是去尋找自己的父控制器是不是modal出來,有就會dismiss它
如圖所示的控件添加約束方法:這樣的有幾個一樣的控件最好放在一個UIView上面。四個約束可以確定位置。第一個btn添加上下左右0000的約束,第二個因第一個有了與第二個btn左側距離為0的約束,所以左邊不需要約束,只要添加上又00,并且與第一個等高等寬。第二個btn需要設置上又00,與第二個btn等高。
xib或者stroyBoard時,最好框架在里面搭,控件的具體設置用代碼實現,比較方便之更改。
__func__:打印出當前調用的方法名。
ARC管理原則:誰創建,誰釋放。一旦沒有強引用了就會被銷毀。
在開發中設置UIviewController的屬性(顏色、frame)時,最好等控制器加載完畢之后在在相應的控制器的ViewDidLoad方法里面設置,而不要在初始化的地方設制。否則導致代碼亂,有時候設置無效。
每一個控制器都有一個title屬性,可以保存一個title。