斯坦福大學iOS應用開發教程學習筆記(第六課)故事版 StoryBoard

第六課 主要內容:多個MVC的程序和故事版、UINavigationController、 Segues


1、多個MVC

前面的程序都是一個MVC,多個View時,怎麼辦,那就需要多個Controller。一個MVC只能控制一屏幕或更小的區域。

那如何切換兩個MVC呢,用控制器羣裏的控制器:UINavigationController。


2、UINavigationController是個控制器

也是繼承於UIVIewController。UINavigationController的長相如下圖:


中間有個title。

它是個特殊的controller,因爲它有一個Outlet只向一另外一個MVC,就是它的rootViewController。

rootViewController就是出現在白色區域的。原來的rootViewController放到UINavigationController後,它 的bounds高度會變小一些。

通過執行一個segues,可以跳轉到另外一個MVC上。就是把新的MVC push都屏幕上,點返回,把當前的MVC pop出來。

3、segues

segues有三種方式:

push 

model

custom 

4、添加Navigation Controller

選中你要嵌入的view Controllser,然後通過Editor的 Embed in包含進來一個Navigation Controller。



這個箭頭表示程序的開始。

 


5、pop一個ViewController的方法:

  1. - (void)popViewControllerAnimated:(BOOL)animated;  

6、兩個關於segues非常重要的方法

跳轉前準備的方法

  1. - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender  
  2. {  
  3. if ([segue.identifier isEqualToString:@“DoAParticularThing”]) {  
  4.     UIViewController *newController = segue.destinationViewController;  
  5. }  
  6. }  


可以決定你是否跳轉到這個頁面,獲取到即將跳轉頁面的controller的實例,這樣可以提前去設置它的屬性。

通過Identifier跳轉的方法:

  1. - (void)performSegueWithIdentifier:(NSString *)segueId sender:(id)sender;  
例子:
  1. - (IBAction)rentEquipment  
  2. {  
  3. if (self.snowTraversingTalent == Skiing) {  
  4. [self performSegueWithIdentifier:@“AskAboutSkis” sender:self];  
  5. else {  
  6. [self performSegueWithIdentifier:@“AskAboutSnowboard” sender:self];  
  7. }  
  8. }  

7、通過故事版來實例化一個ViewController的方法

  1. NSString *vcid = @“something”;  
  2. UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:vcid];  

self.storyboard是一個ViewController的屬性。

例子:

  1. - (IBAction)doit  
  2. {  
  3. DoitViewController *doit =  
  4. [self.storyboard instantiateViewControllerWithIdentifier:@”doit1”];  
  5. doit.infoDoitNeeds = self.info;  
  6. [self.navigationController pushViewController:doit animated:YES];  
  7. }  
獲取後,把它push到navigationController展示。

8、一個StoryBoard和Segues的Demo

主要內容:

  • 在兩個viewController之間創建segue
  • 把ViewController內嵌到NavigationController中去。


segue有兩個很重要的屬性

這兩個屬性在跳轉時經常用到

  • identifier 
  • destinationViewController

Demo源碼下載地址:http://www.stanford.edu/class/cs193p/cgi-bin/drupal/downloads-2011-fall

容芳志 (http://blog.csdn.net/totogo2010)

本文遵循“署名-非商業用途-保持一致”創作公用協議


原文地址:http://blog.csdn.net/totogo2010/article/details/8226430

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