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

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

singleView 故事板,画界面比说故事还容易? 反正我不会说故事.
这里写图片描述
创建完成后系统直接为我们创建了一些文件
这里写图片描述
1.入口类,在故事板模式中 这里将不再支持设置RootViewController 系统也将跳转代码隐藏了
这里写图片描述
2.默认控制器.系统默认控制器,storyboard中的第一个视图默认与这个类绑定,和普通的viewController一样
3.storyboard文件,我们之后只能在这个文件中进行视图的绘制了
这里写图片描述
4.XIB文件? 不是说没有了吗? 这个XIB只是在程序刚刚启动,黑屏加载时调用 加载完成后就会自动跳转到storyboard中的视图
这里写图片描述
大致介绍完毕 下面将详细介绍Storyboard
首先,我们看到storyboard中系统默认给出得视图并非是iphone的 而是ipad的 怎么改变呢?
这里写图片描述
选中视图中的黄色按钮 表示选中整个ViewController
这里写图片描述
在右侧进行设置size 改为这里写图片描述
OK 这个问题解决. 下面我们创建一个视图 并且将两个视图进行关联
这里写图片描述

如何进行页面的跳转

选中viewController 将其拖到空白区 改变size和默认视图相同
在两个视图上各自添加一个按钮
这里写图片描述
选中按钮 右键然后移动到要跳转的视图上面
这里写图片描述
松手后 在黄色视图上就会出现一排选项
选择 show 黄色视图也进行相同的操作 完成后是这样的
这里写图片描述
下面是运行效果
这里写图片描述
这样就实现了两个页面的跳转 是不是很简单?

如何进行视图与类的关联

跳转虽然实现了 可是第二个视图的代码写在哪里呢??
创建一个继承与ViewController的类 不要勾选XIB
这里写图片描述
选中黄色的视图 在Class选项中输入刚才创建的类的名称 按回车保存
这里写图片描述
这样就讲黄色视图跟刚才创建的类关联了起来
在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的线
这里写图片描述
这条线 就是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弹出方式 下次再讲

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值