storyboard的跳转 传值 基础使用详解

自从升级了Xcode6.0习惯的XIB就不见了,对于习惯画控件的懒人来说这是致命的,于是被逼的只能使用难用?的storyboard.
刚开始接触storyboard简直是一团迷雾,简直是一边看博客一边咒骂某水果为什么用这么难用的东西取代XIB.但是随着学习的深入,storyboard的强大之处也慢慢的了解了.但总觉得还是不如XIB用起来顺手.可能是思维上依旧无法转变吧,不过开发的效率确实增快了不少.下面就说下storyboard的使用吧.
## 创建 ##

singleView 故事板,画界面比说故事还容易? 反正我不会说故事.
storyboard的跳转 传值 基础使用详解_第1张图片
创建完成后系统直接为我们创建了一些文件
storyboard的跳转 传值 基础使用详解_第2张图片
1.入口类,在故事板模式中 这里将不再支持设置RootViewController 系统也将跳转代码隐藏了
storyboard的跳转 传值 基础使用详解_第3张图片
2.默认控制器.系统默认控制器,storyboard中的第一个视图默认与这个类绑定,和普通的viewController一样
3.storyboard文件,我们之后只能在这个文件中进行视图的绘制了

4.XIB文件? 不是说没有了吗? 这个XIB只是在程序刚刚启动,黑屏加载时调用 加载完成后就会自动跳转到storyboard中的视图

大致介绍完毕 下面将详细介绍Storyboard
首先,我们看到storyboard中系统默认给出得视图并非是iphone的 而是ipad的 怎么改变呢?
storyboard的跳转 传值 基础使用详解_第4张图片
选中视图中的黄色按钮 表示选中整个ViewController

在右侧进行设置size 改为
OK 这个问题解决. 下面我们创建一个视图 并且将两个视图进行关联
storyboard的跳转 传值 基础使用详解_第5张图片

如何进行页面的跳转

选中viewController 将其拖到空白区 改变size和默认视图相同
在两个视图上各自添加一个按钮
storyboard的跳转 传值 基础使用详解_第6张图片
选中按钮 右键然后移动到要跳转的视图上面
storyboard的跳转 传值 基础使用详解_第7张图片
松手后 在黄色视图上就会出现一排选项
选择 show 黄色视图也进行相同的操作 完成后是这样的
storyboard的跳转 传值 基础使用详解_第8张图片
下面是运行效果
storyboard的跳转 传值 基础使用详解_第9张图片
这样就实现了两个页面的跳转 是不是很简单?

如何进行视图与类的关联

跳转虽然实现了 可是第二个视图的代码写在哪里呢??
创建一个继承与ViewController的类 不要勾选XIB

选中黄色的视图 在Class选项中输入刚才创建的类的名称 按回车保存
storyboard的跳转 传值 基础使用详解_第10张图片
这样就讲黄色视图跟刚才创建的类关联了起来
在YellowViewController中写行代码测试下

- (void)viewDidLoad {
    [super viewDidLoad];
    //设置背景颜色为红色
    self.view.backgroundColor = [UIColor redColor];
    // Do any additional setup after loading the view, typically from a nib.
}


OK 背景颜色成功改变 说明已经关联成功了

如何进行参数的传递 什么是segue

切换到Storyboard 选中从蓝指向黄色view的线
storyboard的跳转 传值 基础使用详解_第11张图片
这条线 就是segue了 不要以为它只是一个指向标识符,如果想要传递参数 还要对它进行设置 查看左边的设置选项 将identifier随便写一个标识符 每个segue的标识符尽量不要重复

接下来 我们让蓝色视图传递给黄色视图一个参数
在黄色视图内添加一个textfield 并且关联到yellowViewController
再创建一个NSString类型的属性
这里写图片描述
切换到ViewController中 在.M文件中写入一个方法

//系统方法 跳转时调用
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender{
    //判断segue的identifier是否是我们刚才设置的 如果不是 则不进行参数传递 依旧会跳转
    if ([segue.identifier isEqualToString:@"goto"]) {
        //获取要跳转的viewController
        UIViewController * view = segue.destinationViewController;
        //对跳转目标的str属性进行设置值
        [view setValue:@"我是被传递过去的字符串君" forKey:@"str"];
    }
}

在yellowViewController中让textfield接受传递过来的字符串

- (void)viewDidLoad {     [super viewDidLoad];
    _textView.text = _str;
}

好了 设置完成 看看效果如何

跳转成功
参数也被顺利的传递了过来
回传参数和这个是一样的 都是通过系统的-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender方法传递的
唯一的区别是系统返回的时候不会在执行viewDidload方法了 想要接受参数可以使用

//这个方法在系统将要显示时调用
-(void)viewWillAppear:(BOOL)animated{
    //在这里接收参数
}

剩下还有push 和model弹出方式 下次再讲

你可能感兴趣的:(ios,传值,storyboard)