swift 代理传值 - 学习笔记

比如我们需要在ViewController里实现HeadView的代理方法并且接收HeadView里传回来的值.那么下面定义
HeadView里,我们定义好协议以及成为它的代理要实现的方法

注:Demo的场景为:HeadView里面有两个按钮,有不同的Tag,我们现在需要在ViewController里通过tag判断你在HeadView里点击了哪个按钮

/// 在class HeadView: UIView {} 方法前定义好协议以及代理方法
protocol DidselectedDelegate: NSObjectProtocol {
   func returnDidSelectedItem(tag: NSInteger) 
}

//  returnDidSelectedItem(tag: NSInteger) 返回点击按钮的Tag值
class HeadView: UIView {
    weak var delegate: didselectedDelegate?  // 声明代理属性,方便"外来者"有成为它代理的入口 。注意要声明为weak类型
    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.backgroundColor = UIColor.redColor()
    }
    
// 通过代理属性,将 值传出去
    @IBAction func onclick(sender: AnyObject) {
        if delegate != nil {
            delegate?.returnDidSelectedItem(sender.tag)
        }
    }
}

在ViewController里我们这样实现代理方法

class ViewController: UIViewController,DidselectedDelegate{  //声明遵守它的协议
   override func viewDidLoad() {
        super.viewDidLoad()
                let headView:HeadView = NSBundle.mainBundle().loadNibNamed("HeadView", owner: nil, options: nil)[0] as! HeadView
        headView.delegate = self
        self.view.addSubview(headView)
    }
}

场景: 接收headView上面因为操作实时改变传回ViewController的值,先声明你可以处理Headview
传回来的值.即你可以实现HeadView的代理方法. 并且成为它的代理

    // 成为HeadVew的代理,就需要实现它声明的代理方法
    func returnDidSelectedItem(tag: NSInteger) {
        print("tag = \(tag)")   
    // HeadView通过代理属性传出来的值, 因为ViewController是它的代理,那么这个值就被ViewController接收了,接收之后就可以做相应的处理了
    }
打印结果

PS: 正在开始用swift做项目,有不熟的地方就记录一下.其实还是很好理解的.和OC基本没有差别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,294评论 4 61
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,268评论 30 472
  • 1、最简单AB面正向传值 效果如下: 最简单的正向传值.gif 首先我们先创建两个视图控制器ViewControl...
    DannyYanQingW阅读 737评论 1 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,256评论 19 139
  • 我想写首诗 提笔时却忘了格式 想起你就不知怎样构思 一张空白无言的纸 落下潦草稀疏几字 哎哟!墨迹让我所想全失 每...
    ebd43eb3c6c3阅读 232评论 0 1