之前在网上搜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页面跳转及传值相关推荐

  1. 【Android基础】页面跳转与传值(Activity跳转与传值)

    一个Android应用程序很少会只有一个Activity对象,如何在多个Activity之间进行跳转,而且能够互相传值是一个很基本的要求. 本次我们就讲一下,Android中页面跳转以及传值的几种方式 ...

  2. 微信小程序两个页面跳转,传值

    微信小程序两个页面跳转,传值 在小程序界面,需要点击后跳转界面并且传递一个值. 具体实现如下:首先在wxml界面需要绑定事件,绑定需要传的值 a.wxml `<view bindtap=&quo ...

  3. Swift中页面跳转与传值:

    1.简单方式 首先,Swift的跳转可分为利用xib文件跳转与storyboard跳转两种方法,我这里选择使用storyboard的界面跳转方法. 1.通过在storyboard中拉button控件建 ...

  4. 安卓之页面跳转与传值和按钮事件

    一:新建页面 即新建Activity,new-other-Android Activity,next, 新建Activity的时候, 1:eclipse会自动创建Layout,我们发现Layout目录 ...

  5. uni-app页面跳转以及传值

    在uni-app中是没有路由这一说法的,想要跳转页面官方给出了以下几种方法: 一.通过配置pages.json里面的tabBar来实现,主要写法请参考官方文档: uni-app官方配置pages.js ...

  6. Android中Activity各种页面跳转并传值(Activity -> Activity)(Activity -> Fragment)(Activity -> Service)

    目录 Activity -> Activity Activity -> Fragment Fragment -> Activity Activity -> Service Ac ...

  7. js实现页面跳转并传值

    原理: 1.将参数通过拼接的方式拼接到页面的后面. 2.页面跳转后,解析url,根据关键字符'?',区别是页面还是后面的参数 3.根据关键字符'=',区分是参数名还是参数值 页面1:test1.htm ...

  8. 移动App开发 MUI框架 利用软键盘的搜索键实现页面跳转并传值

    首页 html <body> <input type="text" name="search" id="search" v ...

  9. html 页面跳转 中文传值,两html页面之间的传值,并解决中文乱码问题

    近日老爸提出要帮他做一个打印table的页面.想了想还是纯静态页面比较来得快,一页填写,一页打印. a.html填写后传值给b.html并进行显示. a.html 的 js 很简单.... funct ...

最新文章

  1. Ubuntu 14.04下 Redis MongoDB安装及使用
  2. iOS开发那些事--iOS6 UI状态保持和恢复
  3. CTSCAPIO被教做人记
  4. MySQL数据库性能优化的关键参数(转)
  5. ubuntu16.04安装天气预报软件
  6. 一米机器人解绑再绑定_安顿问答027:安顿APP里的角色绑定错了,可以更改吗?...
  7. 34. 丑数(C++版本)
  8. Lesson 04:类和对象,类的成员变量、成员方法、构造方法
  9. win10默认系统字体更改
  10. BT601 BT656 BT709 BT1120 解析
  11. 还原 对于 服务器“DESKTOP-BNNIISU\SQLEXPRESS”失败。  (Microsoft.SqlServer.SmoExtended)
  12. 手机上最好用的五笔输入法_手机输入法正在暴露你的年龄,九宫格和全键盘,你用的是哪一种?...
  13. VMware Workstation安装windows xp系统并创建虚拟软盘
  14. css3价格斜切_CSS秘密花园:斜切角
  15. 让word中插入的图片不失真,图像保持原清晰度
  16. 基于MUI的电影新闻的webapp项目开发
  17. 在Win10 WSL中安装百度Apollo
  18. 万代南梦宫面向中国市场推出《太鼓达人》限量版月饼
  19. 华为鸿蒙2系统harmonyOS,华为鸿蒙系统明年目标覆盖1亿台以上设备
  20. 面试指南(三):想跳槽,这些问题你会了吗?

热门文章

  1. shell脚本批量导出MYSQL数据库日志/按照最近N天的形式导出二进制日志[连载之构建百万访问量电子商务网站]...
  2. Wijmo 更优美的jQuery UI部件集:在安全站点使用Wijmo控件
  3. 什么是BETA,RC,ALPHA版 - 软件命名规范
  4. Drupal 更新开源编辑器 CKEditor,修复两个 XSS 漏洞
  5. 这个漏洞能换几杯星巴克?在线等,挺急的
  6. C语言无缘无故提示缺少分号:missing ';' before identifier '...'
  7. 轻松解决linux磁盘分配不均问题
  8. 纠正存储 dict 的元素前是计算 key 的 hash 值?
  9. 云HBase内核解析
  10. Swift 中的过滤器