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 月,苹果开发者 ...
随机推荐
- webpack1--安装与初始化
webpack可用于打包所有的脚本,图片,样式表及其他资源. 今天来讲一下如何安装webpack 及 创建package.json.webpack依赖于npm和 node,所以本文是假设你已安装好了n ...
- 微信小程序——极点日历使用方法
极点日历github项目地址 添加至自己的小程序方法 极点日历属性接口文档 代码实例: xml: <calendar calendar-style="calendar" he ...
- Python 类的初见
#定义一个Python类 class Cat: #self关键字相当于c++类中的this指针 def eat(self): print("i am eating .") def ...
- backup & restore On Ubuntu
详见:https://help.ubuntu.com/community/BackupYourSystem/TAR 在 使用Ubuntu之前,相信很多人都有过使用Windows系统的经历.如果你备份过 ...
- 摄像头驱动OV7725学习笔记连载(二):0V7725 SCCB时序的实现之寄存器配置
上一篇博客主要介绍了OV7725的电气特性以及SCCB接口的时序和输出一帧图像的时序图以及数据的拼接.输出一帧图像与输出时钟PCLK有关. 上图是OV7725实现的整体框架,有点丑.FPGA描述SCC ...
- VidLoc: A Deep Spatio-Temporal Model for 6-DoF Video-Clip Relocalization
用双向lstm对序列图片做相机定位.
- Opencv-Python:图像尺寸、图像的读取、显示、保存与复制
Opencv-Python:图像尺寸.图像的读取.显示.保存与复制 原创 2017年11月23日 21:30:49 4440 在使用opencv的方法时,首先必须导入opencv包.新的opencv导 ...
- 上下栏固定, 中间滚动的HTML模板
因为用position是脱离文档流的,所以在最上面嘛, 中间用overflow:auto就会出现滚动效果 代码 <!DOCTYPE html> <html lang="en ...
- 【转】【Centos】centos 安装libtorrent/rtorrent
1.下载编译时需要的软件 yum install gcc gcc-c++ m4 make automake libtool pkgconfig perl openssl-devel ncurses-d ...
- 【Python】python3实现网页爬虫下载图片
import re import urllib.request # ------ 获取网页源代码的方法 --- def getHtml(url): page = urllib.request.urlo ...