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

智能推荐

fmpeg利用libav库把yuv视频流转换为TS串流-程序员宅基地

文章浏览阅读106次。原文http://blog.csdn.net/littlethunder/article/details/9164929 今天到月末了,才发我这个月的第一篇文章,因为这个月前三周一直在看ffmpeg的libavcodec和libavformat两个库源..._ffmpeg yuv数据转成ts

金山卫士开源代码----消息机制浅析 (下)_cwndclassinfo register失败-程序员宅基地

文章浏览阅读3.5k次。博客已迁移至:http://kulv.sinaapp.com/,这里不再使用接上文http://blog.csdn.net/hw_henry2008/archive/2011/05/22/6438153.aspx代码地址:http://download.csdn.net/source/3301518 HWND CBkDialogImpl : public CW_cwndclassinfo register失败

Linux编程——交叉编译器基本指令介绍_arm-linux-gnueab 指令-程序员宅基地

文章浏览阅读2.2k次,点赞3次,收藏12次。Linux编程——交叉编译器基本指令介绍arm-linux-gnueabihf-gccarm-linux-gnueabihf-ldarm-linux-gnueabihf-objcopyarm-linux-gnueabihf-objdump1.arm-linux-gnueabihf-gcc简介:编译文件用作用:具体使用中使用 -g -c (编译文件.s) -o (可执行文件.o)-g:为使用GDB进行调试-c:编译源文件但不进行链接-o:指定编译产生的文件```bash -pa_arm-linux-gnueab 指令

Tensorflow学习-自定义模型_tensorflow自定义模型-程序员宅基地

文章浏览阅读7.9k次,点赞3次,收藏14次。摘要:在tensorflow里面,已经封装了一些常用的网络结构模型,比如CNN,DNN这些,有时候我们需要自己搭一个网络结构或者需要了解每个网络是如何搭建起来的,相信这篇文章会对你有一点点所帮助。已有模型正文:model_fn:我们首先需要写一个函数描述我们的网络,这个也是自己搭建模型最为核心的一步,通常需要做以下的事情1.基本的网络结构(卷_tensorflow自定义模型

蓝湖怎么切图标注_【蓝湖指北】一张图教你如何选择标注尺寸-程序员宅基地

文章浏览阅读4.6k次。蓝湖的标注、切图功能广受好评,正确选择标注尺寸,让设计师与工程师的沟通和协作事半功倍。本期【蓝湖指北】,湖湖将手把手教你如何选择标注尺寸。Step 1 :将设计图上传至蓝湖上传设计图至蓝湖,单击设计图任意地方,即可打开设计图标注信息面板,查看该设计图元素大小、描边、颜色、投影、圆角、字体、字号、边距等信息。单击空白处,即可关闭标注面板。Step 2 :标注时,正确选择标注单位点击标注面板右上方三角..._蓝湖改成不同尺寸

关机充电动画客制化以及错位调整_cust_display.h-程序员宅基地

文章浏览阅读1.3k次。[说明] 关机充电动画客制化以及错位调整 [解]一,客制化1,关机充电标志图片都在阿尔卑斯山/供应商/联/专有/启动/引导程序/ LK的/ dev /标识目录下,在这里可以看到多个包含不同尺寸图片的子目录,具体使用哪个子目录下的图片由$ {} BOOT_LOGO决定。 注意:如果客户想要使用客制化的背景图片,可以直接替换子目录下对应编号的图片 2,需要根据实际情况修改。例如: ..._cust_display.h

随便推点

yii 基本流程结构-程序员宅基地

文章浏览阅读2.1k次。第一部分:MVC模型1 用户发出了访问 URL http://www.example.com/index.php?r=post/show&id=1 的请求,Web 服务器通过执行入口脚本 index.php 处 理此请求。2 入口脚本创建了一个 应用 实例并执行。3 应用从一个叫做 request 的 应用组件 中获得了用户请求的详细信息。

Flutter 设置iOS启动图_flutter ios启动页-程序员宅基地

文章浏览阅读500次。Flutter 设置iOS启动图_flutter ios启动页

SpringCloud Zuul过滤器中重新run() 发送请求头 Authorization ,依然无法获取包含token的请求头_java zull 转发请求后未拿到 token-程序员宅基地

文章浏览阅读4.2w次,点赞2次,收藏2次。原因:网关默认过滤"Cookie", "Set-Cookie", "Authorization"private Set<String> sensitiveHeaders = new LinkedHashSet(Arrays.asList("Cookie", "Set-Cookie", "Authorization"));处理方法:yml文件中配置sensitive..._java zull 转发请求后未拿到 token

把标注TXT文件转化为VOC的xml文件_将标注为左上角右下角坐标的数据集转换为voc的xml格式-程序员宅基地

文章浏览阅读5.2k次。参考链接:点击打开链接我自己的数据集格式为filename lable xmin ymin xmax ymax1 通过别的模板转换VOC数据集的xml格式为:&lt;annotation&gt; &lt;folder&gt;VOC2007&lt;/folder&gt; &lt;filename&gt;00..._将标注为左上角右下角坐标的数据集转换为voc的xml格式

金蝶KIS商贸版—(业务结账)期末结账操作介绍-程序员宅基地

文章浏览阅读6.2k次。业务结账业务系统中当一个业务期间已经结束,需要通过〖功能〗→〖业务期末结账〗来截止当期核算单据的处理,计算本期的库存商品成本余额,并转入下一期,同时系统当前期间下置。期末结账前,会对本期的核算单据进行检查,需要确保当前期间所有业务单据都已经审核。通过业务期末结账功能中的【查看】可以查找到当期所有未审核单据;专家温馨提示:1、业务期末结账构成:期末结账、反结账以及查看本期未审核单据。...

STM32程序异常——中断处理要谨慎-程序员宅基地

文章浏览阅读1.7k次。问题背景最近有一个新项目(车载项目),板子上除了原来的ARM + STM32F030K6Tx又多了一个8bit的mcu的单片机,这可真是嵌入式全家福了。系统的主要核心工作是由arm来完成,但是在开机早期及休眠、唤醒等过程是由stm32来控制完成的。开机过程中的ACC打火检测、高低压检测,同时也是为了保证休眠的时候整块板子的的低功耗(休眠时只有rtc有电及stm32处于深度休眠,其他全部..._stm32f030找不到adc中断

推荐文章

热门文章

相关标签