iOS——使用StroryBoard页面跳转及传值
之前在网上搜iOS的页面跳转大多都是按回以前的那种xib的形式,但鄙人是使用storyboard的。这篇就只介绍利用storyboard进行页面跳转与传值。
新建页面
iOS的程序也是使用了MVC的思想,页面文件与代码文件是分离的,这点与Android的类似。在使用storyboard的方式中,新建页面只需要在storyboard中拖入一个View Controller则可,
接下来就可以在新建的页面中添加各种控件来编辑这个新建的页面。
在新建的页面上编排各种视图控件如同在Android中编辑那个布局的xml,但是要让程序代码与这个视图关联,需要做一些操作。首先必不可少是建立一个相关联的类,此时需要新建一个Objective-C的class,基类就选择对应的View Controller基类,这里就最简单的UIViewController,With XIB for user Interface那个复选框不能勾,点击完成便可成功建立一个View Controller。
回到stroyboard视图,选择刚刚新建的视图页面,点击下图的红框框住的部分
在下图红框处选择对应的View Controller,这样就把视图与程序代码文件View Controller关联上了
页面跳转
建立完新页面就可以进行页面间的跳转,最简单的跳转则是用类似建立控件Outlet或者绑定事件一样,按住Ctrl键然后拖动到要跳转到的页面上,然后在弹出的窗口选择modal
在运行程序后点击按钮就可以实现跳转。
另一种跳转的方式则是在起始页面按着Ctrl键然后拖动到目标页面中,弹出窗口的选项跟上面的一样,然后选中两个页面连线,在下图红框处给这个Segue命名
,最后在View Controller想触发跳转的地方(就比如点击按钮,则在按钮的点击事件的方法中)添加下面代码
[self performSegueWithIdentifier:@“segue的名” sender:nil];
则可实现跳转
跳转到新的页面后要返回上一个页面,则在需要返回的地方添加以下代码
[self dismissModalViewControllerAnimated:true];
参数true与false代表的是跳转的页面的切换时是否使用动画
页间传值
页面间值的传递最简单的方式是定义一个全局变量,无论是跳转还是返回,都可从该变量中get/set到值,如果不用这种方式,跳转时传值可以使用prepareForSegue sender 方法,返回时可以使用协议的方式,下面分别来看看。
使用prepareForSegue sender 方法来传递值,需要先在目标页面的View Controller的类声明处声明传递参数的属性,比如那个属性就叫value1吧,接着在起始页的地方实现方法
-(void) prepareForSegue: (UIStoryBoardSegue *)segue sender: (id)
{
if([segue.identifier compare:@"mySegue"]==NO)
{
id page2=segue.destinationViewController;
[page2 setValue:self.lbUserName2.text forKey:@"value1"];
}
}
起到传值作用是 setValue forKey的方法,segue的destinationViewController可以获取到当前Segue所跳到的目标页面的View Controller。这里有一个判断,用于判别这个跳转动作的segue是否是需要传值的那个segue,因为如果一个页面会有多个Segue跳转到不同的页面,不这样区分,在目标页面的View Controller中没有相应的参数时则会抛出异常。
采用协议的方式进行返回时传值,思想是这样的,定义相关的协议,协议是给起始页实现的,目的在于开放一些供赋值的方法给目标页面调用,目标页面在返回的时候就调用那些方法来把返回值传回给起始页面,目标页面如何获取起始页的实例呢,那就通过页面上面的setValue forKey方法来传值,下面给一个示例
定义协议
@protocol HGReturnView1Delegate <NSObject> -(void) setReturnText:(NSString *) value; @end
起始页面需要实现该协议,实现部分的代码就不贴出来了。目标页的声明处需要定义一个上面的协议属性
@property (weak,nonatomic) id delegate;
在页面跳转时传值时就调用以下代码
[self setValue:self forKey:@”delegate”];
在返回的时候需要用到delegate属性进行强制转换,转换后调用setReturnText方法
NSObject<HGReturnView1Delegate> *tmpDele=self.delegate;
[tmpDele setReturnText: self.txtReturn.text];
iOS——使用StroryBoard页面跳转及传值的更多相关文章
- iOS使用StroryBoard页面跳转及传值
之前在网上iOS的页面跳转大多都是按回以前的那种xib的形式,但鄙人是使用storyboard的.这篇就只介绍利用storyboard进行页面跳转与传值. 新建页面 iOS的程序也是使用了MVC的思想 ...
- Android中实现activity的页面跳转并传值
一个Android应用程序很少会只有一个Activity对象,如何在多个Activity之间进行跳转,而且能够互相传值是一个很基本的要求. 本次我们就讲一下,Android中页面跳转以及传值的几种方式 ...
- H5页面跳转与传值
页面之间的跳转经常使用a标签,使用mvc框架的都是通过访问controller的请求方法,返回请求页面.但本次开发,前端与后台完全分离,前端APP使用HBuider来开发,后台数据就无法使用mvc框架 ...
- Intent实现页面跳转和传值
*Intent称为意图,是Android各大组件连接的桥梁 1.Activity页面跳转 同一个包内 Intent intent = new Intent(); intent.setClass(Mai ...
- MVC 【Razor 视图引擎】基础操作 --页面跳转,传值,表单提交
ASPX 与 Razor 仅仅是视图不一样. 新建项目----ASP.NET MVC 4 Web 应用程序------选择模板(空).视图引擎(Razor ) 1.视图中 c# 代码 与 HT ...
- flutter -------- 页面跳转和传值
在安卓原生开发中,页面跳转可以用Intent类来具体实现: Intent intent =new Intent(MainActivity.this,second.class); startActivi ...
- swift 下storyboard的页面跳转和传值
------------------1. 最简单的方法 拖拽, 这个就不用多解释了吧. 直接拖拽到另一个视图控制器, 选择 show, 就行了. 2. 利用 Segue 方法 (这里主要是 方法1 的 ...
- MUI 页面跳转(传值+接收)
官方:做web app,一个无法避开的问题就是转场动画:web是基于链接构建的,从一个页面点击链接跳转到另一个页面, 如果通过有刷新的打开方式,用户要面对一个空白的页面等待: 如果通过无刷新的方式,用 ...
- Android tab_Host页面跳转,传值,刷新等问题汇总
之前做了一个项目是关于Tab_Host的,现在完成了恰逢闲余写份总结,主要涉及里面遇到问题以及解决方案的. (首先说明这份代码是在eoe 下载的,这里感谢分享的那位朋友,限于我的工程是公司的不能拿出来 ...
随机推荐
- [.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用
[.net 面向对象程序设计进阶] (7) Lamda表达式(三) 表达式树高级应用 本节导读:讨论了表达式树的定义和解析之后,我们知道了表达式树就是并非可执行代码,而是将表达式对象化后的数据结构.是 ...
- [.net 面向对象编程基础] (11) 面向对象三大特性——封装
[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...
- 浅析Windows安全相关的一些概念
Session 我们平常所说的Session是指一次终端登录, 这里的终端登录是指要有自己的显示器和鼠标键盘等, 它包括本地登录和远程登录.在XP时代每次终端登录才会创建一个Session,但是在Vi ...
- 使用Guava提供的transform批量转换
实际开发了,为了快速查询,我们会把日期以Long类型的方式存储到数据库中,比如20000000000000L,但显示的时候,要完整的日期,即yyyy-MM-dd的格式显示. 这个时候,我们就可以使用C ...
- Atitit 发帖机实现(4 )- usbQBM1601 gui操作标准化规范与解决方案attilax总结
Atitit 发帖机实现(4 )- usbQBM1601 gui操作标准化规范与解决方案attilax总结 1.1. 根据gui的类型使用不同的gui调用api1 1.2. Script化1 1.3. ...
- Servlet过滤器,Servlet过滤器创建和配置
第一:Servlet的过滤器的创建和配置,创建一个过滤器对象需要实现javax.servlet.Filter接口,同时实现Filter的3个方法. 第一方法是过滤器中的init()方法用 ...
- ubuntu下在apache部署python站点
ubuntu下在apache部署python站点 我的是ubuntu14 32为的虚拟机,默认安装的python为3.4 环境:apache + mysql + django + python3 软件 ...
- 关于sass的介绍和基本语法
引入 什么是sass?sass是css预处理器. 那预处理器又是什么?css本身不是一种编程语言,而预处理器是用一种专门的编程语言,进行网页样式设计,然后再编译成正常的CSS文件. 如今主流的预处理器 ...
- php技术之路
按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...
- 邻接矩阵无向图(三)之 Java详解
前面分别介绍了邻接矩阵无向图的C和C++实现,本文通过Java实现邻接矩阵无向图. 目录 1. 邻接矩阵无向图的介绍 2. 邻接矩阵无向图的代码说明 3. 邻接矩阵无向图的完整源码 转载请注明出处:h ...