StoryBoard

1.第一个项目用的是xib,一个页面包含3个部分【.h .m .xib】

2.第二个项目用的是storyboard.
3.有四个模块,然后我们用了4个storyboard,每个storyboard含有一个NavigationController。
4.用UITabBarController做这四个storyboard的【container view controller】容器。
5.最后把UITabBarController 设为window.rootViewController 。

UITabBarController *tabBar = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateInitialViewController];

UINavigationController *firstVC = [[UIStoryboard storyboardWithName:@"VCStoryboard" bundle:nil] instantiateInitialViewController];


UINavigationController *secondVC = [[UIStoryboard storyboardWithName:@"SecondStoryboard" bundle:nil] instantiateInitialViewController];
UINavigationController *thirdVC = [[UIStoryboard storyboardWithName:@"ThirdStoryboard" bundle:nil] instantiateInitialViewController];
UINavigationController *fourthVc = [[UIStoryboard storyboardWithName:@"Fourth" bundle:nil] instantiateInitialViewController];
UINavigationController *fifthVc = [[UIStoryboard storyboardWithName:@"Fifth" bundle:nil] instantiateInitialViewController];

tabBar.viewControllers = @[firstVC,secondVC,thirdVC,fourthVc,fifthVc];

self.window.rootViewController = tabBar;

StoryBoard_第1张图片
Paste_Image.png

知识铺垫
storyboard 把 view controller叫做:“scene”.(场景)
storyboard可以描述各种场景之间的过渡,这种过渡被称作"segue",你通过简单的ctrl-dragging就能搞定,减少代码量。
storyboard支持table view的prototype cell,这意味着你可以在storyboard中编辑cell,直接在tableView 中建立cell 的xib,减少代码量。
更改初始化vc 【is initial view controller】
只有给scene 设置 完class ,才可以向对应的.h 或.m 拖拽。
页面跳转(A页面的button 点击跳转B页面)
①在StoryBoard的某个scene中 A页面的button 直接往B页面上拖拽,
弹出页面,选择跳转方式,就完成了页面的跳转
②使用代码进行跳转
把界面缩小(你可以在空白的地方双击一下,或者右键选择缩放比例)
把A页面往B页面拖拽,弹出页面,选择跳转方式。此时产生A页面过度到B页面的segue。设置segue 的identifier (唯一标识),在A页面的button 的点击事件下写入代码

[self performSegueWithIdentifier:@"segueIdentifier" sender:self];

页面传值
① 使用- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender; 进行传值

  • (IBAction)goAction:(id)sender
    {
    // 根据指定线的ID跳转到目标Vc
    [self performSegueWithIdentifier:@"SendValue" sender:self];
    }

  • (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    // segue.identifier:获取连线的ID
    if ([segue.identifier isEqualToString:@"SendValue"]) {
    // segue.destinationViewController:获取连线时所指的界面(VC)
    ReceiveViewController *receive = segue.destinationViewController;
    receive.name = @"Garvey";
    receive.age = 110;
    // 这里不需要指定跳转了,因为在按扭的事件里已经有跳转的代码
    // [self.navigationController pushViewController:receive animated:YES];
    }
    }
    ②通过storyBoard name 获取storyboard;通过storyBoardId 获取对应的VC,然后通过push 的方式进行跳转。

  • (IBAction)action:(id)sender
    {
    // 获取指定的Storyboard,name填写Storyboard的文件名
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
    // 从Storyboard上按照identifier获取指定的界面(VC),identifier必须是唯一的
    ReceiveViewController *receive = [storyboard instantiateViewControllerWithIdentifier:@"IdReceive"];
    receive.name = @"GC";
    receive.age = 10;
    [self.navigationController pushViewController:receive animated:YES];
    }
    参考:
    http://www.tuicool.com/articles/uuAv2ia
    http://www.jianshu.com/p/2ec2c19f183e

你可能感兴趣的:(StoryBoard)