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,大功告成

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值