第六課 主要內容:多個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的方法:
- - (void)popViewControllerAnimated:(BOOL)animated;
6、兩個關於segues非常重要的方法
跳轉前準備的方法
- - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
- {
- if ([segue.identifier isEqualToString:@“DoAParticularThing”]) {
- UIViewController *newController = segue.destinationViewController;
- }
- }
通過Identifier跳轉的方法:
- - (void)performSegueWithIdentifier:(NSString *)segueId sender:(id)sender;
- - (IBAction)rentEquipment
- {
- if (self.snowTraversingTalent == Skiing) {
- [self performSegueWithIdentifier:@“AskAboutSkis” sender:self];
- } else {
- [self performSegueWithIdentifier:@“AskAboutSnowboard” sender:self];
- }
- }
7、通過故事版來實例化一個ViewController的方法
- NSString *vcid = @“something”;
- UIViewController *controller = [storyboard instantiateViewControllerWithIdentifier:vcid];
self.storyboard是一個ViewController的屬性。
- - (IBAction)doit
- {
- DoitViewController *doit =
- [self.storyboard instantiateViewControllerWithIdentifier:@”doit1”];
- doit.infoDoitNeeds = self.info;
- [self.navigationController pushViewController:doit animated:YES];
- }
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