swift x输入流_Swift 中不同窗体的切换和传递数据 (segue 的用法)

废话不多说,直接进入正题

首先在 storyboard 中新建一个 ViewController,再新建一个名为 NewViewController 的 cocoa touch class 文件,继承 UIViewController,将新建的 ViewController 绑定到 NewViewController 类上。现在 storyboard 中就有两个 ViewController 了。如图:

之后设计窗体上的控件,在第一个窗体(称为窗体 A)内放一个标签和一个按钮,在第二个窗体(称为窗体 B)内放一个输入框和按钮。将标签和输入框的 outlet 绑定到 swift 文件中,为两个按钮分别添加各自的监听事件。如图:

我们的目标是点击窗体 A 的按钮能够跳转到窗体 B,同时窗体 B 输入框中的内容变成窗体 A 标签内的文字,在修改输入框中的内容,再点击按钮,能够跳转回窗体 A,同时窗体 A 标签中的内容变成在窗体 B 的输入框中修改的内容。

我们选中第一个窗体上方三个按钮中的第一个按钮,用拖拽的方式拖到第二个窗体,并在弹出来的选项中选择 show detail。如图

之后就可以看到两个窗体之间新增了一条连接线

选中这条连接线,设置它的 Storyboard Segue 的 Identifier 为 JumpToNew。

在 NewViewController 中应当加一个变量 data 用于存储传来的数据,同时在窗体加载时将 data 的数据放入 textField 中,代码如下:

var data:String?

override func viewDidLoad() {

super.viewDidLoad()

textField1.text = data

}

然后我们在 ViewController 中按钮的监听事件中编写跳转代码,并且再外加一个方法传递数据

// ViewController.swift

@IBAction func jump(_ sender: UIButton) {

self.performSegue(withIdentifier: "JumpToNew", sender: label1.text)

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

if segue.identifier == "JumpToNew"{

let controller = segue.destination as! NewViewController

controller.data = sender as? String

}

}

之后运行程序就会发现第二个窗体的 textField 中也显示了 Hello

接下来实现在窗体 B 中修改的内容在窗体 A 中显示,首先在窗体 A 的 swift 文件中新建一个 IBAction 修饰的方法:

@IBAction func back(unwindSegue : UIStoryboardSegue){

let view = unwindSegue.source as! NewViewController

label1.text = view.textField1.text

}

这个方法里的 view 就是指窗体 B,这个方法在从窗体 B 返回窗体 A 时执行

之后将窗体 B 的 Exit 方法绑定到按钮上,选中返回按钮,拖拽到窗体 B 上方第三个按钮(Exit),再选择 backWithUnwindSegue。这个意思就是在点击返回按钮时回到窗体 A,同时窗体 A 中的 back 方法。如图

OK,大功告成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355286.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提防Java中的函数式编程!

这对函数式编程并不会造成太大的影响,这真棒。 这是关于某些实践的警告,您很可能会将其应用于您的代码,而这完全是错误的! 。 高阶函数对于函数式编程是必不可少的,因此,谈论它们将帮助您成为聚会中的焦点…

LoadRunner脚本增强技巧之检查点

检查点的设置理解起来非常简单,就是要在服务器返回的页面中检查是否存在关键信息。检查点函数的错误会导致整个脚本运行结果的失败,通过这个功能可以方便地定位脚本运行中的逻辑错误。检查点的设置通常分为两种,一种是对文字的检查&#xff0…

苹果app商品定价_App Store 即将进行价格调整

当税率或外汇汇率变化时,我们有时需要更新 App Store 中的价格。即日起,巴基斯坦、哥伦比亚和台湾 App Store 中的产品价格(不包括自动续期订阅)将会上调。此次价格上调基于以下税率变化:• 哥伦比亚:自 2019 年 1 月 1 日起开始实…

es2016

对象解构 http://www.jb51.net/article/70140.htm 转载于:https://www.cnblogs.com/oneboi/p/7092847.html

hibernate 排序_Hibernate提示:排序和排序

hibernate 排序让我们介绍另一个Hibernate性能提示。 你还记得以前的Hibernate的模式后 ? 我们有一个与一对多协会有关的星际飞船和军官。 Entity public class Starship {Id GeneratedValue(strategyGenerationType.SEQUENCE) private Long id;public Long getId()…

苏宁大数据怎么运营_苏宁云商“三驾马车”:大数据、大物流、大金融并行

(赢商网1月15日报道)随着“未来的零售企业是线上线下的完美融合”这一趋势的走红,2013年年初苏宁电器决定更名为“苏宁云商”,而在更名之后,公司的转型步伐一直在不断加快,行动力也令业界为之刮目相看。“大物流”模式今日&#x…

VueJS组件之全局组件与局部组件

全局组件 所有实例都能用全局组件。 HTML <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>Vue 测试实例 - 菜鸟教程(runoob.com)</title> <script src"https://cdn.bootcss.com/vue/2.2.2/vue.min.js&quo…

Spark简介,您的下一个REST Java框架

希望今年您对Java的热情很高&#xff01; 今天&#xff0c;我们将研究一个清新&#xff0c;简单&#xff0c;美观且实用的框架&#xff0c;以Java编写REST应用程序。 它将非常简单&#xff0c;甚至根本不会看起来像Java。 我们将研究Spark Web框架。 不&#xff0c;它与Apache…

jq的插件 vue中引用_详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件

本篇文章主要介绍了详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件&#xff0c;具有一定的参考价值&#xff0c;有兴趣的可以了解一下使用vue-cli构建的vue项目&#xff0c;webpack的配置文件是分散在很多地方的&#xff0c;而我们需要修改的是build/webpack.base…

SQL Search

Press TAB to expand wildcard tab键之后&#xff0c;会自动展开&#xff0c;直接枚举表中所有的字段 根据名字查找存储过程&#xff0c;发现找不到 原因是&#xff0c;本地是一个备份库。服务器上通过sql source control进行版本控制的。 在通过sql source control将服务器上新…

Java日期工具类

Java日期工具类对日期格式进行转化&#xff0c;例如&#xff0c;将2018-12-13转化成20181213&#xff0c;也可以反过来。 package main.java.utils;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class DateUtil {/*** …

两个数组合成一个json对象_两个jsonarray合并

技术文档主体内容&#xff1a;可以认为是页面最想表达的内容总和。对于内容详情页来说&#xff0c;主体内容指从标题开始至正文内容结束&#xff0c;翻页区域也被视为主体内容&#xff0c;文章后的评论、分享、推荐等不视为主体内容。首屏&#xff1a;用户点击搜索结果后进入移…

04_传智播客iOS视频教程_类是以Class对象存储在代码段

1231312转载于:https://www.cnblogs.com/ZHONGZHENHUA/p/7097077.html

drools的guvnor_Drools Guvnor –管理访问

drools的guvnor外部化业务或技术规则对于可伸缩应用程序非常重要&#xff0c;但是应该管理BRMS服务访问。 guvnor使用基于角色的授权提供控件UI访问和操作。 在drools-guvnor参考手册中列出了几种权限类型。 具有所有权限的管理员。 分析师或只读分析师&#xff1a;特定类别的分…

安卓实现序列化之Parcelable接口

安卓实现序列化之Parcelable接口 1.实现序列化的方法&#xff1a; Android中实现序列化有两个选择&#xff1a;一是实现Serializable接口&#xff08;是JavaSE本身就支持的&#xff09; 。一是实现Parcelable接口&#xff08;是Android特有功能&#xff0c;效率比实现Serializa…

容器对象模式。 一种新的测试模式。

如果您搜索什么是页面对象的描述&#xff0c;就会发现页面对象模式为我们提供了一种以可重用和可维护的方式对内容建模的常识方法。 还要指出&#xff1a;在Web应用程序的UI中&#xff0c;您的测试与某些区域交互。 Page Object只是将它们建模为测试代码中的对象。 这减少了重…

字符串工具类,随机生成字符串

字符串工具类&#xff0c;随机生成字符串package main.java.utils;import java.util.Map; import java.util.Random;public class StrUtil {/*** 定义一个字符串&#xff08;A-Z&#xff0c;a-z&#xff09;*/private static final String STR_ONE "abcdefghijklmnopqrs…

css与网页制作

百度&#xff1a;常用DIVCSS命名大全集合转载于:https://www.cnblogs.com/Tpf386/p/7100017.html

Oracle修改密码文件_转载:Oracle修改用户密码

转载一位大佬的博文&#xff0c;用于帮助常忘记密码的我和某些同道。1. 通过系统管理员(system)修改密码修改普通用户密码相对来说简单很多。1.1 登录系统管理员账户。一般为system。1.2 查询当前系统存在的用户。这一步属于辅助性查找&#xff0c;可以不执行。select username…

爬虫突破IP封锁

爬虫突破IP封锁 爬取网站最常出现的问题就是IP封锁的问题,较为简单的方法就是购买有效IP,免费IP虽然不花钱,但是不好用,做爬取测试的时候还勉强能用。 我从快代理购买付费的IP,把自己的电脑的IP加入白名单,再使用其提供的Api获取有效IP进行爬取。 package com.zhq.crawle…