Swift:delegate

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
    }
    
   
    
    
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值