Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom
modal 模态转换
是在viewController中的标准切换的方式,包括淡出什么的,可以选切换动画。
push
是在navigation View Controller中下一级时使用的那种从右侧划入的方式
popover(iPad only)
*Replace (iPad only):
custom
http://www.cnblogs.com/mybkn/archive/2012/03/22/2411842.html
http://blog.sina.com.cn/s/blog_834f346f0100s4jr.html
http://www.cocoachina.com/bbs/simple/?t92552.html
http://blog.csdn.net/totogogo/article/details/7361191
一 、简述
Storyboard是你可以用来定义用户界面的一种新的方式,像xib。
与xib不同的是它可以同时管理多个ViewController,而且可以在Storyboard中配置ViewController 之间的跳转关系。
二、Storyboard使用
如果你是创建新项目,Xcode模版可以提供一个配置好的Storyboard供你使用。对于其它的应用,使用Storyboard的过程如下:
1、配置应用程序Info.plist文件
- 添加UIMainStoryboardFile ,值为storyboard的文件名。
- 删除原来的NSMainNibFile
2、像以前创建xib文件一样创建一个storyboard文件
3、配置 storyboard中的viewController
三、Storyboard的创建
你可以用InterfaceBuilder 去为你的应用程序创建一个Stroyboard,一般来说一个应用使用一个 Storyboard就够了,但是如果你想创建多个也是可以的,只要你愿意。一个 Stroyboard应该至少含有一个ViewController。
在iPhone中,对于每一个在Storyboard的ViewController都管理着一个scene,每个scene又管理着screen上的东东,但对于iPad来说,多个scene可以同时呈现在一个screen上。你可以从library中拖拽viewController到你的Storyboard上。
当你想关联两个viewController时,你可以按着control键,用鼠标从一个ViewController中的button,table view cell…拖拽连接到另一个你想跳转到的ViewController,这样就创建了一个segue,不要忘记设置identifier哦。
四、 Scene之间的数据传递
当你从当前 scene中触发一个segue的时候,系统会自动调用prepareForSegue:sender:这个方法。如果你想从一个界面切换到里另一个界面的时候传递数据,你应该override这个方法。
A---》B
想把数据 NSString A_data 从AController传到BController,则在BController中
@property 一个NSString data
然后在AController中添加方法
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NSLog(@"The segue id is %@", segue.identifier );
UIViewController *destination = segue.destinationViewController;
if ([destination respondsToSelector:@selector(setData:)])
{
[destination setValue:@"这是要传递的数据" forKey:@"data"];
}
}
之后,Bcontroller中的data属性,就接收到数据了。
五、ViewController之间的跳转
1、如果在 Storyboard中当前的 ViewController和要跳转的ViewController之间的segue存在,则可以执行performSegueWithIdentifier:sender:这个方法实现跳转。
2、如果目标ViewController存在Storyboard中,但是没有segue。你可以通过UIStoryboard的instantiateViewControllerWithIdentifier:这个方法获取到它,然后再用你想要的方式实现跳转,如:压栈。
3、如果目标ViewController不存在,那就去创建它吧。
Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom的更多相关文章
- Storyboard里面的几种Segue区别和视图的切换
几种segue:push.modal.popover.replace.cutom. 一.视图切换类型介绍 1.在iPhone和iPad中,segue的类型是不同的. 2.在iPhone中,segue有 ...
- profile和bashrc四种的区别
Linux下profile和bashrc四种的区别 12160阅读 0评论 /etc/profile./etc/bashrc.~/.bash_profile.~/.bashrc很容易混淆,他们之间有什 ...
- centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB 注意down掉网卡的方法 nginx效率没有LVS高 ipvsadm命令集 测试LVS方法 第三十三节课
centos LB负载均衡集群 三种模式区别 LVS/NAT 配置 LVS/DR 配置 LVS/DR + keepalived配置 nginx ip_hash 实现长连接 LVS是四层LB ...
- Hadoop Hive概念学习系列之hive三种方式区别和搭建、HiveServer2环境搭建、HWI环境搭建和beeline环境搭建(五)
说在前面的话 以下三种情况,最好是在3台集群里做,比如,master.slave1.slave2的master和slave1都安装了hive,将master作为服务端,将slave1作为服务端. 以 ...
- 面试题:ApplicationContext和BeanFactory两种容器区别
ApplicationContext和BeanFactory两种容器区别 BeanFactory是ApplicationContext容器的父接口 BeanFactory(多例模式): BeanFac ...
- [转]magento 2 modes – 每种模式的特点及如何切换(翻译)
本文转自:https://www.hellomagento2.com/switch-magento-2-system-modes/ 原文地址 在开始 Magento 2 使用之前,需要了解一些基本的东 ...
- vue 中router.go;router.push和router.replace的区别
vue 中router.go:router.push和router.replace的区别:https://blog.csdn.net/div_ma/article/details/79467165 t ...
- tableView主从表在storyboard连线是 Selcetion Segue和Accessory Action的区别
当按住Ctorl这样连线时会出现,当选择Selection Segue下面的push时,点击cell的任何位置都会跳转到下一个tableView,当选择Accessory Action的下面的push ...
- [转]在Storyboard中使用自定义的segue类型
转自:http://my.oschina.net/u/728866/blog/92709 我们知道segue共有三种类型:push.modal以及custom.如下图: 很明显,这三种类型的作用分 ...
随机推荐
- Qt中使用随机数
新建Empty qmake project,命名为UseRand UseRand.pro SOURCES += \ main.cpp QT += core main.cpp #include < ...
- 【LEETCODE OJ】Binary Tree Postorder Traversal
Problem Link: http://oj.leetcode.com/problems/binary-tree-postorder-traversal/ The post-order-traver ...
- Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决
Android Material Design Ripple Effect在Android5.0(SDK=21)以下Android版本崩溃问题解决 附录1的Android Ripple Effect水 ...
- C++类的运用 和 三大函数
在<数据结构与算法分析C++描述>一书中给出了三段代码,简单描述了C++类的接口.实现.与调用: #ifndef INTCELL_H_INCLUDED #define INTCELL_H_ ...
- iOS学习笔记---c语言第九天
高级指针 指向结构体变量的指针,称为结构体指针 可以使用->指向内容. %p打印地址 void pLenth(cPoint *p1,cPoint *p2) //求两点间的距离 用的开方函数sq ...
- box2dweb 学习笔记--sample讲解
前言: 之前博文"台球游戏的核心算法和AI(1)" 中, 提到过想用HTML5+Box2d来编写实现一个台球游戏. 以此来对比感慨一下游戏物理引擎的巨大威力. 做为H5+box2d ...
- Matlab位运算笔记
本文为转载其他地方的文章; MATLAB函数 1.matlab函数bitset 设置数的某一位二进制位为1. <Simulink与信号处理> 使用方法 C = bitset(A,bit) ...
- hdu 2795 线段树(二维问题一维化)
Billboard Time Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- html5的程序接口与元素变化
除了原先的DOM接口,HTML5增加了更多API,如:1. 用于即时2D绘图的Canvas标签2. 定时媒体回放3. 离线数据库存储4.文档编辑5. 拖拽控制6. 浏览历史管理元素变化新的解析顺序新的 ...
- JavaScript BOM 遗漏知识再整理;弹窗和记时事件;
1.JavaScript 弹窗 警告框 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. window.alert() 方法可以不带上window对象, ...