swift开发之--代理协议的使用
swift代理的使用,和oc版本有区别,区别还是蛮大的,不过和oc一样都是用于反向传值:
实现如下:
1,声明两个类

2,实现流程,viewcontroller页面点击按钮进入firstVC页面,然后在firstVC页面修改值,返回把值传到viewcontroller页面

3,具体实现:
a 在firstVC页面声明代理
import UIKit
class FirstViewController: UIViewController {
@IBOutlet weak var textField: UITextField!
var delegate:EditViewControllerDelegate?
var oldStr:String?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
if oldStr != nil {
textField.text = oldStr
}
}
@IBAction func sendAction(_ sender: Any) {
delegate?.edidStr(controller: self, newInfo: textField.text!)
}
@IBAction func disMissAction(_ sender: Any) {
delegate?.editStrDidCancel(controller: self)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
b 声明代理方法
protocol EditViewControllerDelegate {
func edidStr(controller:FirstViewController,newInfo:String)
func editStrDidCancel(controller:FirstViewController)
}
c 代理方法的使用
import UIKit
class ViewController: UIViewController,EditViewControllerDelegate {
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
//页面跳转时
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "EditView"{
let controller = segue.destination as! FirstViewController
//设置代理
controller.delegate = self
//将值传递给新页面
controller.oldStr = label.text
}
}
func edidStr(controller: FirstViewController, newInfo: String) {
label.text = newInfo;
controller.presentingViewController?.dismiss(animated: true, completion: nil)
}
func editStrDidCancel(controller: FirstViewController) {
controller.presentingViewController?.dismiss(animated: true, completion: nil)
}
segue的设置:

swift开发之--代理协议的使用的更多相关文章
- swift开发新项目总结
新项目用swift3.0开发,现在基本一个月,来总结一下遇到的问题及解决方案 1,在确定新项目用swift后,第一个考虑的问题是用纯swift呢?还是用swift跟OC混编 考虑到新项目 ...
- swift开发多线程篇 - 多线程基础
swift开发多线程篇 - 多线程基础 iOS 的三种多线程技术 (1)NSThread 使用NSThread对象建立一个线程非常方便 但是!要使用NSThread管理多个线程非常困难,不推荐使用 ...
- Swift开发第十篇——可变参数函数&初始化方法顺序
本篇分为两部分: 一.Swift中的可变参数函数 二.初始化方法的顺序 一.Swift中的可变参数函数 可变参数函数指的是可以接受任意多个参数的函数,在 OC 中,拼接字符串的函数就属于可变参数函数 ...
- Cordova - 与iOS原生代码交互2(使用Swift开发Cordova的自定义插件)
在前一篇文章中我介绍了如何通过 js 与原生代码进行交互(Cordova - 与iOS原生代码交互1(通过JS调用Swift方法)),当时是直接对Cordova生成的iOS工程项目进行编辑操作的(添加 ...
- 《Swift开发指南》
<Swift开发指南> 基本信息 作者: 关东升 赵志荣 丛书名: 图灵原创 出版社:人民邮电出版社 ISBN:9787115366245 上架时间:2014-8-5 出版日期:20 ...
- Swift开发中的一些琐碎
1.Swift中使用OC 1.创建 pch 文件,直接引用需要的头文件 #import"SQLite3.h" 2.修改 pct 路径 ,如下图,就可以使用了 2. Swift 没 ...
- 智捷公开课马上开始了-欢迎大家一起讨论学习-第一系列读《Swift开发指南(修订版) 》看Swift视频教程
引用: 智捷课堂携手51CTO学院.图灵教育联合举办iOS线上培训就业班系列体验公开课. 分享移动开发.移动设计方向最新,最热,最抢眼技术热点以及设计经验.我们每周将最少举办一次公开课,同时会提前安排 ...
- 关于《Swift开发指南》背后的那些事
时间轴(倒叙)2014年8月底在图灵出版社的大力支持下,全球第一本全面.系统.科学的,包含本人多年经验的呕心沥血之作<Swift开发指南>(配有同步视频课程和同步练习)全线重磅推出2014 ...
- Swift开发语法
Swift开发入门 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 历史 2010 年 7 月,苹果开发者 ...
随机推荐
- python 安装pycurl
yum install libghc-gnutls-dev opnssl nss -y 126 yum install libghc-gnutls-dev -y 127 yum install htt ...
- C/C++-STL中lower_bound与upper_bound的用法以及cmp函数
转载于:http://blog.csdn.net/tjpuacm/article/details/26389441 不加比较函数的情况: int a[]={0,1,2,2,3}; printf(&qu ...
- Python之输出当前时间
import time print time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
- java 5.0引入的新特性-枚举
概念 首先,枚举并不是一种新技术,而是一种基础数据类型.它隶属于两种基础类型中的值类型,如下: 2. 为什么要有枚举 枚举在真正的开发中是非常常用的,它的作用很简单也很纯粹:它定义了一种规范,就是要 ...
- 【转载】Exchange 2010配置与安装实用手册
Exchange 2010配置与安装实用手册 在Exchange 2010配置的时候主要分三大部分,这分别是网络配置.准备存储以及相关的安装策略和过程.同时还需要注意和其他的Windows软件相协调. ...
- (转)小议TCP的MSS(最大分段)以及MTU
[前言]漫漫51长假,没有好的去处,只能每日上网消遣,某日逛到NBO灌水,见一帖曰:无法通过2514路由器上MSN(出口为ADSL线路,通过PPPoE)吾心想,ADSL---PPPoE,那肯定就是MT ...
- Python——signal
该模块为在Python中使用信号处理句柄提供支持.下面是一些使用信号和他们的句柄时需要注意的事项: 除了信号 SIGCHLD 的句柄遵从底层的实现外,专门针对一个信号的句柄一旦设置,除非被明确地重置, ...
- Thinkphp5笔记一:项目部署
系统:window 7 64位 Thinkphp版本:5.0.5 环境:wampserver集成 笔记分为两大部分,配置篇与数据库篇 一.虚拟主机部署/本地部署 在网站根目录下建立文件index.ph ...
- thinkphp3.2 session时间周期无效
Thinkphp3.2 session周期时间默认是无效的 方法一: 这种方法使用session非常麻烦 1.配置'SESSION_AUTO_START' =>false,2.控制器方法sess ...
- 如果返回结构体类型变量(named return value optimisation,NRVO) ------ 续
为什么? <More C++ idioms>: 3. Algebraic Hierarchy 程序执行的流程与自己想的不一样: Number Number::makeReal(double ...