控制器補充知識:Segue和Modal

一:Segue 是storyboard用來頁面跳轉的線 ——> UIStiryboardSegue 對象

1.三個必備屬性:
 唯一標識:indetifier 
來源控制器(在左邊)sourceViewController 
目標控制器  (在右邊)  destinationViewController

2.分類:(Segue根據跳轉形式 )
自動型Segue:(點擊按鈕之後,不需要做判斷的時候)
手動型Segue:(需要做判斷,滿足時跳轉)
 從來源控制器拖線到目標控制器
 需要設置標識,
 然後源控制器調用:performSegueWithIdentifier進行跳轉,

 [self performSegueWithIdentifier:@“” sender:nil];
  self  是來源控制器

 1>.根據indentifier去storyboard中找到對應的線,然後新建UIStoryboardSegue對象
    設置Segue對象的(來源控制器)sourceViewController         segue. sourceViewController = self ;
    新建(目標控制器) ContactViewController 設置  segue.destinationViewController  = ContactViewController ;

 2>.執行跳轉,跳轉之前調用Segue的[self prepareForSegue:segue sender:nil]做好準備工作,傳入創建好的Segue對象,開始執行頁面跳轉操作

 3>.取得sourceViewController所在的UINavigationController
    調用UINavigationController 的 push 方法將desctinationViewController壓入棧中完成跳轉

二:Modal:(除了push之外,還有另外一種控制器的切換方式)
 modal 是創建出來一個新的控制器,根之前用操作的不一樣,
1.任何控制器都能通過Modal的形式展示出來

2.Modal的默認效果:新控制器從屏幕的最底部往上鑽,直到蓋住之前的控制器爲止

3.以Modal的形式展示控制器
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion
  
關閉當初Modal出來的控制器
- (void)dismissViewControllerAnimated: (BOOL)flag completion: (void (^)(void))completion;

4、內部機制
(1)彈出之後,window上面只有一個子視圖。
(2)雖然當前界面上展示在我們眼前的時twoview,但是window的根控制器仍然是NJviewController,它並沒有切換window的根控制器,而僅僅只是換了window上面顯示的視圖。
(3)移除的視圖並沒有銷燬,因爲控制器並沒有銷燬,所以控制器對應的view也沒有銷燬。
(4)在模態彈出(完全顯示後),在方法中傳入two作爲參數,默認就有一個控制器強引用着它。
(5)當向下移除之後,只要調用了控制器的dismiss方法讓窗口關閉,modal就釋放了。
(6)通常彈出的模態窗口都會提供一個導航條,讓界面擁有導航條的最快的方式是給它包裝一個導航控制器。
(7)如果一個控制器是以模態的形式展現出來的。可以調用該控制器以及該控制器的子控制器,讓該控制器消失。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章