Swift5.0 代理的基本使用_雨中的鱼丶的博客-程序员秘密

技术标签: Swift开发  swift  

代理: 个人理解, 假如存在 A  B两个对象

需求: 当B做出动作的时候, 需要A来响应,并做出动作

实现思路:

  1. B 中 创建的函数 
  2. 通过在 A中创建了B   
  3. B中调用函数, A接收而改变

代码如下:

下载地址:https://download.csdn.net/download/qq_29305413/12676120

A 对象

import UIKit

class ViewController: UIViewController,TestDelegate {
    
    func returuColore(in color: UIColor) {
        
        // 改变自身
        self.view.backgroundColor = color

    }
    
    func returuTest(in test: String) {
        self.title = test
    }
    

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        self.title = "点击改变背景"
    }

    @IBAction func clickPushTestVC(_ sender: Any) {
        
        let testVc = TestVC.init()
        testVc.delete = self
        self.navigationController?.pushViewController(testVc, animated: true)
    }
    
}

 

B 对象

import UIKit

@objc
public protocol TestDelegate {
    
    /// 必须执行
    func returuColore(in color:UIColor)
    
    /// 选择执行
    @objc optional func returuTest(in test:String)
    
}


class TestVC: UIViewController {

    open weak var delete:TestDelegate?
    
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.
    }

    @IBAction func clickChangeColor(_ sender: Any) {
        
        self.delete?.returuColore(in: .yellow)
        
        self.delete?.returuTest?(in: "背景已经改变")
    }
    
}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29305413/article/details/107713702

智能推荐

AndroidStudio项目第三方jar混淆规则_studio的第三方库不被混淆-libraryjars_安静的Sunny的博客-程序员秘密

当一个项目要上线对外发布时,为了安全,不被别人破解,一般都要进行混淆或资源加密等, 下面就针对一些项目中用到的第三方Jar混淆规则进行record,会持续更新,敬请关注: 注:当无法确定第三方jar包存放位置时,可以通过-keep class xx.xx.包名来过滤。**———————————-一、 Gson混淆———————————--keepattributes Signature -ke

html怎么导入flash视频,DW如何在网页中插入Flash视频?_weixin_39670246的博客-程序员秘密

在 Dreamweaver 的“文档”窗口中打开 index.html 页面,插入一个三列的表格,在由三列组成的表格的中间一列中放置的图形之上单击一次。选择“插入”>“媒体”>“Flash 视频”。在“插入 Flash 视频”对话框中,从“视频类型”弹出式菜单中选择“渐进式下载视频”。 关于…关于 Flash 视频 使用 Dreamweaver 中的“插入 Flash 视频”命令,可将...

存储过程性能低怎么破?_存储过程性能为什么会降低_cainiao_M的博客-程序员秘密

报表应用中实现数据源计算经常会使用存储过程,但同时也带来多方面的问题。首先,存储过程的包只提供一层分类,无法用树形结构组织,容易造成代码管理混乱。而有些程序员更是直接在现场在线修改存储过程,也不利于代码管理。其次,升级存储过程时需要数据库的写权限,容易对数据安全造成影响。另外,由于 SQL 固有的一些问题(数据无序、缺乏集合、无法引用、分步不彻底,等等),使得存储过程的编程也比较困难。很多情况...

python pip安装selenium_python+selenium安装_weixin_39796752的博客-程序员秘密

python+selenium安装python下载地址:https:www.python.org安装完成进入cmd,输入python如果cmd找不到,需要添加环境变量selenium安装地址:https://pypi.org添加环境变量python/Scriptshttps://pypi.org/project/selenium/pip=python -m pippython -m pip ins...

7.GDB文档_chengtiaoyu6263的博客-程序员秘密

阅读了GDB文档,将主要知识点简要的写一下: 编译时:-g -o0(-g:将调试信息加到可执行文件中 -o0:编译过程中不进行优化,默认是2) attach目标程序:gdb text.exe,设置参数:set args 10 20 30 40 50 arrach运行中程序:gdb -p...

Python 难点解析---初级篇1.Python WWH_Bone Breaker的博客-程序员秘密

Python作为一个使用简便,并且开发效率极快的解释型语言,上手特别的简单,但是简洁的语法中有时也藏着不少的坑,接下来的文章里面会把笔者近一年学习中遇到的坑都翻出来。接下来用WWH原则来解析一下Python。What:Python是什么语言性质:上面已经说过,Python是一门***解释型语言***,他与编译型语言的区别在于运行前不需要直接编译成机器语言,而是在运行时将程序翻译成机器语言。...

随便推点

玩转STM32(8)配置JLink调试器_caimouse的博客-程序员秘密

前面已经介绍了怎么样编译项目,生成一个HEX文件,但是这个目标文件还是储存在电脑上,这样你辛苦写出来的代码,还是一个没有什么作用的文件,即使已经把开发语言变成了机器语言,也是无济于事的。那么怎么样才能把这个目标文件搬到STM32的CPU里面呢?这是有很多种方法的,比如采用STM32的烧写器;比如把目标文件发送给ST公司,让生产这个CPU时,直接写入去;在我这里采用开发的模式,就是使用前面介绍的JL...

PyTorch 命名张量(Named Tensors)的介绍_nyi: named tensors are not supported with the trac_ScorpioDoctor的博客-程序员秘密

请到这里去查看图文教程:http://studyai.com/pytorch-1.4/intermediate/named_tensor_tutorial.html命名张量旨在通过允许用户将显式名称与张量维度关联,使张量更易于使用。在大多数情况下, 采用维度参数的操作将接受维度名称,从而避免了按位置跟踪维度的需要。此外,命名张量使用 名称自动检查API在运行时是否正确使用,从而提供额外的安全性。...

Java -- 常用的JNI接口函数简介(二)_newobjectarray_第一序列丶的博客-程序员秘密

Java -- 常用的JNI接口函数简介(二)接着上一篇,再继续介绍一些其他常用的JNI接口函数(函数调用示例基于C++实现)。一、数组操作1、获取数据长度在JNI中,如果我们需要获取常如数组参数的长度值,可以调用jsize GetArrayLength(JNIEnv *env, jarray array):GetArrayLength jsize Ge...

“黑客”深度学习之“游戏外挂原理实现”之美_外挂算法_嘿克不黑的博客-程序员秘密

最近很多热爱玩游戏的朋友看了我文章后,经常私信问我,“你是黑客吗?”我回答“我是一个白帽子黑客”。“那能不能帮我攻入游戏系统做一款游戏外挂,咱们一起赚钱?”我就只能呵呵了,肯定是不可以的,技术上虽然可以实现但是原则上一定不要那么做。首先大家可以学习如何做外挂,也可以自己在家用单机游戏做外挂来测试,这样既能提高自身技术又能满足自己的好奇心,但是如果为了谋取利益攻击网络游戏,做一款外挂这样就是触犯...

OpenCV把彩色图片转换为灰度图片_opencv彩色转灰度_caimouse的博客-程序员秘密

在实现彩色图片转换为灰度图片之前,先来了解一下图像数字化。当你张开眼睛,就看到现实的世界,比如房子,花草和不同的物品。如果要把当前的眼睛所见的东西保存起来,在以前是使用胶片相机,那是采用化学的感光方法来进行记录。这种记录的方法是在分子层面的记录,在肉眼看来,它就是连续的,不能区分的,我们常常把这种情况叫做模拟记录,因此这种图片也叫做模拟图片。随着时代的进步,人们发现人的眼睛对物体的分辨能力是有限的...

Keil新建Stm32标准工程中 Preprocessor Symbols的作用_preprofessor symbol_hb69222的博客-程序员秘密

(转自正点原子的回复)标准的工程新建办法,是要添加" USE_STDPERIPH_DRIVER,STM32F10X_HD的.USE_STDPERIPH_DRIVER,是告诉编译器,我们需要使用标准库了(实际上是.c/.h文件里面的一个宏,通过这个宏决定是不是要用某些资源,比如库函数的使用)STM32F10X_HD,则是表示我们使用的芯片是大容量的stm32,从而告诉那些.c/.h文件,使用...

推荐文章

热门文章

相关标签