Swift UIViewController中的delegate方式传值
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()
}
}
Swift UIViewController中的delegate方式传值的更多相关文章
- 在OC中调用Swift类中定义delegate出现:Property 'delegate' not found on object of type ...
找了许久没找到答案, 在下面的链接中, 我解决了这个问题: http://stackoverflow.com/questions/26366082/cannot-access-property-of- ...
- QTableView中使用Delegate方式来实现对特定列的文本进行换行
问题:由于表格的一个列中,有个别文本过长,默认情况下,QTableView不支持对某列的文本换行,所以需要通过Delegate方式来实现这样的效果 头文件的Delegate #pragma once ...
- swift项目中使用OC/C的方法
假如有个OC类OCViewController : UIViewController类里有两个方法 //swift调用oc或c的混编是比较常用的,反过来的调用很少.这里只写了swift调用oc和c的方 ...
- Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数
Swift语言中为外部参数设置默认值可变参数常量参数变量参数输入输出参数 7.4.4 为外部参数设置默认值 开发者也可以对外部参数设置默认值.这时,调用的时候,也可以省略参数传递本文选自Swift1 ...
- 【转】iOS开发-Protocol协议及委托代理(Delegate)传值
原文网址:http://www.cnblogs.com/GarveyCalvin/p/4210828.html 前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来 ...
- ios中关于delegate(委托)的使用心得
ios中关于delegate(委托)的使用心得 分类: iOS开发2012-05-15 10:54 34793人阅读 评论(9) 收藏 举报 iosuiviewtimerinterfaceprinti ...
- ios学习-delegate、传值、跳转页面
ios学习-delegate.传值.跳转页面 1.打开xcode,然后选择ios--Application--Empty Application一个空项目. 项目目录: 2.输入项目名称以及选 ...
- iOS开发-Protocol协议及委托代理(Delegate)传值
前言:因为Object-C是不支持多继承的,所以很多时候都是用Protocol(协议)来代替.Protocol(协议)只能定义公用的一套接口,但不能提供具体的实现方法.也就是说,它只告诉你要做什么,但 ...
- 新手介绍简单一下iOS开发中几种界面传值
首先在处理iOS-UI中,也许在很多地方需要用到两种甚至多种不同界面之间的传值,相比这也是很多iOS入门成员头疼问题,同样作为新手的我在接触这类传值时候也一脸懵然,经过一段时间的研究,对于简单的传值有 ...
随机推荐
- 获取Android设备标识符
Android开发中有时候因业务需要客户端要产生一个唯一的标识符使服务器能识别某台Android设备,目前一般使用三种标识符分别为DeviceId.AndroidId.MAC地址. 获取DeviceI ...
- python 列表,集合,字典,字符串的使用
PY PY基础 append 在末尾添加元素 pop 删除末尾元素 insert(i,item)在i位插入元素 pop(i)删除i位元素 只有1个元素的tuple定义时必须加一个逗号,,来消除歧义 i ...
- Linux下几种常见压缩方式测试对比
目录 Linux下几种常见压缩方式测试对比 参考 简介 测试 总结 Linux下几种常见压缩方式测试对比
- python获取全国各个城市pm2.5、臭氧等空气质量
随着国家发展,中国很多城市的空气质量其实并不好,国家气象局会有实时统计,但是要去写爬虫爬取是十分麻烦的事情,并且官方网站也会做一些反爬虫措施,所以实现起来比较麻烦,最好的办法就是使用现成的免费接口,空 ...
- asp.net core刷新css缓存
在非spa程序开发的时候.css经常会因为浏览器的缓存机制导致不刷新. 很多前端为了应对这个问题,都会引入webpack或者gulp等工具来处理css缓存的问题. 但是作为一个偏服务器端的程序员来说. ...
- 基于Influxdb对InfluxDBResultMapper的一点扩展
理想很饱满,现实很骨感. 由于业务需要"灵活可配置"的功能需求,在使用java开发Influxdb查询功能的时候,遇到了一个问题,Measurement注解的名称有可能需要动态变化 ...
- 用go语言爬取珍爱网 | 第二回
昨天我们一起爬取珍爱网首页,拿到了城市列表页面,接下来在返回体城市列表中提取城市和url,即下图中的a标签里的href的值和innerText值. 提取a标签,可以通过CSS选择器来选择,如下: $( ...
- 第3章(2) Linux下C编程风格
Linux内核编码风格在内核源代码的Documentation/CodingStyle目录下(新版本内核在Documentation/process/coding-style.rst). 变量命名采用 ...
- 如何成为一个伟大的 JavaScript 程序员
这篇文章主要概述在我5年工作经验的基础上,我成为优秀JavaScript开发人员所使用的技术和资源. 当前大多数Web开发人员面临着这样一个共同的问题:他们必须在多个不同的领域领先于他人——从数据库到 ...
- 从零开始搭建前端监控系统(三)——实现控制iframe前进后退
前言 本系列文章旨在讲解如何从零开始搭建前端监控系统. 项目已经开源 项目地址: https://github.com/bombayjs/bombayjs (web sdk) https://gith ...