专栏首页编程语言Swift:delegate

Swift:delegate

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/Mayxc/article/details/102801354

1.定义代理方法:

@objc protocol ChangeColorDelegate: class {
    /// 必须实现的方法
    func changeClolor(_ clolor:UIColor) 
    /// 非必须实现方法
    @objc optional func mayChangeClolor() -> UIColor
}

///也可以这样声明:
protocol ChangeColorDelegateSwift: class {
    /// 必须实现的方法
    func changeClolor(_ clolor:UIColor)
    /// 非必须实现方法
     
}

2.申明代理属性(weak):

weak var delegate:ChangeColorDelegate?

3.调用代理方法:

   if ((self.delegate?.changeClolor) != nil) {
                   self.delegate?.changeClolor(.red)
               }

4.在需要调用的地方遵循代理

bVC.delegate = self

5.在需要调用的地方写代理方法

extension ViewController:ChangeColorDelegate{
    func changeClolor(_ clolor: UIColor) {
        self.view.backgroundColor = clolor
    }
    
    
}

具体使用方法:

B 界面:

import UIKit

@objc protocol ChangeColorDelegate: class {
    /// 必须实现的方法
    func changeClolor(_ clolor:UIColor) 
    /// 非必须实现方法
    @objc optional func mayChangeClolor() -> UIColor
}

class BViewController: UIViewController {
    weak var delegate:ChangeColorDelegate?
    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .green
        // Do any additional setup after loading the view.
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
        //调用代理方法
         if ((self.delegate?.changeClolor) != nil) {
                   self.delegate?.changeClolor(.red)
               }
    }
   

}

A界面:

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        self.view.backgroundColor = .blue
        // Do any additional setup after loading the view.
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
         self.view.backgroundColor = .blue
        let bVC = BViewController()
//        bVC.modalPresentationStyle = .fullScreen
        ///遵循代理
        bVC.delegate = self
        self.present(bVC, animated: true, completion: nil)
    }
}
///代理方法
extension ViewController:ChangeColorDelegate{
    func changeClolor(_ clolor: UIColor) {
        self.view.backgroundColor = clolor
    }
    
   
    
    
}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Swift 打开三方地图 腾讯地图、百度地图、高德地图、Apple 地图

    在info.plist 添加LSApplicationQueriesSchemes

    菜菜不吃蔡
  • iOS:WKWebView JS 交互这点事

    菜菜不吃蔡
  • iOS:URL 特殊字符 # UTF-8

    菜菜不吃蔡
  • 【python实现卷积神经网络】卷积层Conv2D反向传播过程

    代码来源:https://github.com/eriklindernoren/ML-From-Scratch

    绝命生
  • Golang之chan/goroutine

    最近在team内部培训golang,目标是看看golang能否被C工程师快速掌握。我定了个一个月,共计20小时的培训计划,首先花10个小时(两周,每天1小时)让...

    李海彬
  • Python 中的闭包

    上面提到了两个关键的地方: 自由变量 和 函数, 这两个关键稍后再说。还是得在赘述下“闭包”的意思,望文知意,可以形象的把它理解为一个封闭的包裹,这个包裹就是一...

    the5fire
  • python接口的定义

    接口只是定义了一些方法,而没有去实现,多用于程序设计时,只是设计需要有什么样的功能,但是并没有实现任何功能,这些功能需要被另一个类(B)继承后,由 类B去实现其...

    py3study
  • Python packaging too

    首先,我用的虚拟机装的linux系统,linux自带的python2.7,所以python的安装工具是python2的,当使用python3.6,也就是在在项目...

    py3study
  • python logging with

    Recently, I was made a service which can provide a simple way to get best model....

    py3study
  • python AES对称加密示例

    高级加密标准(英语:Advanced Encryption Standard,缩写:AES)

    py3study

扫码关注云+社区

领取腾讯云代金券