基于 Storyboard 多种方式的页面跳转、参数传递
通过按钮关联跳转
选中 Button ,然后点击 action 右边拖拽到 第二个页面

选择 “Show”即可完成跳转关联。

定义页面间 segue Id,通过代码触发跳转
选中第一个页面,点击manual右边拖拽到第二个页面

选中 show即可关联两个页面

点击中间的关联点,修改 Segue Id

通过 Segue Id 跳转
@IBAction func onButtonClick(_ sender: Any) {
self.performSegue(withIdentifier: "ToSecondView", sender: nil)
}
通过 Storyboard ID 跳转
设置第二个页面的 Storyboard ID

通过 Storyboard 的文件名称和页面的 ID获取到ViewController,通过pushViewController跳转。
@IBAction func onButtonClick(_ sender: Any) {
let sb = UIStoryboard(name: "Moments", bundle:nil)
let vc = sb.instantiateViewController(withIdentifier: "SecondView")
self.navigationController?.pushViewController(vc, animated: true)
}
传递参数
传输参数到第二个页面
class SecondViewController: UIViewController {
var param:String = ""
override func viewDidLoad() {
super.viewDidLoad()
print("param:\(param)")
}
}
传输参数非常简单,只要覆盖 prepare 方法,在方法中设置参数即可。
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.destination is SecondViewController){
let vc = segue.destination as! SecondViewController
vc.param = "Wiki"
}
}
}
运行结果:
param:Wiki
返回参数:第一种方式
class FirstViewController: UIViewController {
var param:String = ""
override func viewDidAppear(_ animated: Bool) {
// 在这里处理返回值
print("返回值:\(param)")
}
...
}
class SecondViewController: UIViewController {
...
@IBAction func onCloseClick(_ sender: Any) {
let vc = self.navigationController?.viewControllers[(self.navigationController?.viewControllers.count)! - 2] as! FirstViewController
vc.param = "收到啦"
self.navigationController?.popViewController(animated: true)
}
}
结果
返回值:收到啦
返回参数第二种方式:通过 NotificationCenter 返回值
定义监听器
override func viewDidLoad() {
super.viewDidLoad()
let notificationName = Notification.Name("UploadStatus")
NotificationCenter.default.addObserver(self, selector: #selector(updateStatus), name: notificationName, object: nil)
}
@objc func updateStatus(notification: Notification){
if(notification.object != nil){
print("2上传状态:\(notification.object!)")
}
if(notification.userInfo != nil){
print("2参数:\(notification.userInfo!)")
}
}
发送通知
let notificationName = Notification.Name("UploadStatus")
NotificationCenter.default.post(name: notificationName, object: "上传失败")
NotificationCenter.default.post(name: notificationName, object: nil, userInfo: ["param1":"Wiki","param2":18])
基于 Storyboard 多种方式的页面跳转、参数传递的更多相关文章
- vue前端页面跳转参数传递及存储
不同页面间进行参数传递,实现方式有很多种,最简单最直接的方式就是在页面跳转时通过路由传递参数,如下所示. 路由传递参数 this.$router.push({ name: '跳入页面', params ...
- springMVC使用注解方式进行页面跳转
<!--控制层-->package cn.org.spartacus.spring; import org.springframework.beans.factory.annotation ...
- 基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码
比如 想跳到 mao.aspx 的页面 的div id="s" 的位置 那么 只用<a href="mao.aspx#s"> 就可实现跳转到指定位置 ...
- js方式的页面跳转
window.location.href="login.html"; (直接function里面执行 跳转)
- 微信小程序页面跳转参数传递
可以使用标签直接传递 <navigator class="gotoDetail" target="self" url="../detail/de ...
- Thinkphp5 表单提交额外参数和页面跳转参数传递url
1. 表单提交 <input type="hidden" name="project_name" value="$project_name&qu ...
- js页面跳转的方式
js方式的页面跳转1.window.location.href方式 <script language="javascript" type="text/java ...
- angularjs项目的页面跳转如何实现
链接:https://www.zhihu.com/question/33565135/answer/696515Angular页面传参有多种办法,根据不同用例,我举5种最常见的:PS: 在实际项目中, ...
- AngularJS进阶(八)实现页面跳转并进行参数传递
angularjs实现页面跳转并进行参数传递 注:请点击此处进行充电! Angular页面传参有多种办法,我在此列举4种最常见的: 1. 基于ui-router的页面跳转传参 (1) 在Angular ...
随机推荐
- wx-all
学习这部分时也学了不少代码,一段一段往这上面写实在有点~~~ 直接把代码部署到代码该在的地方吧,哈哈哈 这是网址 把代码放这上面就好多了,不怕代码丢,还可保证代码完整,嘻嘻嘻~~~~~~
- git 版本检出checkout的方法笔记
想检出指定版本,比如回退版本,将代码检出到老代码 git checkout 版本号 git reflog git checkout 标签名 1.git log 查看版本信息,复制版本号,执行git ...
- QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAllocEx failed.(遇到还没试过)
今天在使用Redis的时候出现以下错误: QForkMasterInit: system error caught. error code=0x000005af, message=VirtualAll ...
- Vue---记一次通过{{}}获取json数据-页面渲染不出来的坑
前两天干活儿的时候碰到一个Vue的问题,让我这个菜鸡完全摸不到头脑,需求如下:前端页面点击表格中的某一行的详情按钮,会弹出一个Dialog,然后Dialog中有选项卡,选项卡中再有具体的table来展 ...
- Privacy Violation 侵犯隐私
- 阿里云服务器搭建web项目小结
前言 最近恰好有时间,自己搞了个云服务器试着搭建了个网站,遇到了一些问题,通过踩坑也涨了一些经验,遂记录一二,与后来者分享. 正文 1.博主用的阿里云服务器,为什么用它呢?一个是恰逢双十一,有优惠:另 ...
- C#通过反射调用类及方法
反射有个典型的应用,就是菜单的动态加载,原理就是通过反射调用某个窗体(类).下面演示一下通过反射调用类及方法: 1.新建一个类,命名为:ReflectionHelper,代码如下: #region 创 ...
- C#/.Net开发入门篇(3)——console类的输入输出
相信看了我上一篇文章的小伙伴们都知道console这个类的最基本的2个方法了吧,下去练习过的小伙伴应该能知道4个方法. 那么下面我们就来介绍一下上期没有介绍完的另外2个方法Console.WriteL ...
- HeadFirst设计模式<2>
HeadFirst设计模式<2> 1 装饰者模式 星巴克咖啡 饮料 总结 如果说策略模式是通过组合实现弹性,那么装饰者模式就是通过继承来实现,在实现的同时,客户基本感觉不到使用了装饰者模式 ...
- C语言编程的一些小总结
1. static:可用于定义静态局部变量 在局部变量前,加上关键字static,该变量就被定义成为一个静态局部变量. 举一个静态局部变量的例子: void fn() { static int n=1 ...