Swift UIViewController中的delegate方式传值
2024-09-01 16:03:48
ios swift开发中有几种方式传值,看到简书上一篇不错的文章。
链接:http://www.jianshu.com/p/3e1173652996
一.通过segue进行传值
二.通过delegate进行传值
三.通过Notification进行传值
四.通过回调函数进行传值
需求:
我们经常会使用navigationViewController,使用segue拉拉线,就可以实现页面跳转,使用prepareForSegue方便进行参数的正向传递,但我们也许也有的业务会是反向的传递参数,这个时候需要使用delegate。
假设有两个vc,事先做好了segue拉线,设置了按钮啥的,然后可以直接正向跳转,以及因为在一个navigation里面所以,第二个vc有个默认的back(发送并返回,这里即“发送给A“按钮)按钮可以反向的跳转,第一个是avc,第二个是bvc, 在bvc中我们写一个协议protocol,当然这个协议是写在类外面的,只是和类在同一个swift文件中。
通过segue和delegate正反向进行传值
这个例子AViewController 通过 segue 传值 BViewController,BViewController 通过delegate 传值 。1、AViewController的代码如下:
import UIKit
class AViewController: UIViewController {
@IBOutlet weak var receiveLabel: UILabel!
@IBAction func sendBtnAction(sender: AnyObject) {
self.performSegueWithIdentifier("toBviewController", sender: nil)
}
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if(segue.identifier == "toBviewController"){
var bVc:BViewController = segue.destinationViewController as BViewController
bVc.tempString = textField.text
bVc.delegate = self
}
}
}
extension AViewController:SendMessageDelegate{
func sendWord(message: String) {
receiveLabel.text = message
}
}
2、SendMessageDelegate和BViewController的代码如下:
import UIKit
protocol SendMessageDelegate{
func sendWord(message : String)
}
class BViewController: UIViewController {
@IBOutlet weak var receiveLabel: UILabel!
@IBAction func sendBtnAction(sender: AnyObject) {
if((delegate) != nil){
self.delegate?.sendWord(textField.text)
self.navigationController?.popViewControllerAnimated(true)
}
}
@IBOutlet weak var textField: UITextField!
var tempString:String?
var delegate : SendMessageDelegate?
override func viewDidLoad() {
super.viewDidLoad()
self.receiveLabel.text = tempString
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
最新文章
- html 中自动换行的实现方式
- iOS各种开源类库
- SQL中查看数据库各表的大小
- Oracle复制表结构和表数据
- 实战开发中UI资源制作标准
- Java编程思想(1)
- 10409 - Die Game
- python虚拟环境的使用
- 用Mirror,搞定用户画像
- oracle 列行转换
- 华为路由器帧中继 FR 实验
- BZOJ1834[ZJOI2010]网络扩容——最小费用最大流+最大流
- Docker私有镜像仓库
- [转]COPY OR MOVE FILES AND FOLDERS USING OLE AUTOMATION
- 读后感+资源-----java8函数式编程pdf
- 4th 课堂SCRM会议旁观记录
- HDFS分布式集群安装
- PCB设计黄金法则永不改变
- Unit01: Spring简介 、 Spring容器 、 Spring IOC
- 《机器学习实战第7章:利用AdaBoost元算法提高分类性能》
热门文章
- poi下载excel模板
- vue 引入 fontawesome 报错 Could not find one or more icon(s) 解决
- mysql创建用户和权限管理
- 从 axios 源码中了解到的 Promise 链与请求的取消
- Network in Network(2013),1x1卷积与Global Average Pooling
- SpringBootSecurity学习(21)前后端分离版之OAuth2.0非对称加密
- Java-Thread00之多线程知识准备
- 【JavaScript】 控制自适应高度
- Hackers' Crackdown UVA - 11825
- 基于mosquitto的MQTT客户端实现C语言