Swift3.0-代理和闭包的简单使用

代理闭包进行逆向传值

闭包

  • 在第二个页面写一个闭包(要传的值是字符串, 整型, 字典)

    typealias InputClosureType = (String, Int, [String: String]) -> Void
    
  • 需要在第二个页面理创建一个闭包

    var backClosure: InputClosureType?
    
  • 在点击事件里执行闭包

    if self.backClosure != nil {
              
       self.backClosure?("卢梦如", 24, ["name": "卢梦如"])
              
    }
    
  • 在第一个页面里创建第二个页面的实例的地方对闭包传值

    secondVC.backClosure = {
              
          (name: String, age: Int, dictionary: [String: String]) -> Void in
              
          // 打印传过来的数据
              
          print("\(name) is \(age) years", dictionary)
              
    }
    

代理

  • 在第二个页面里 声明一个代理

    protocol SecondViewControllerDelegate: NSObjectProtocol {
      
      func backValue(string: String, value: Int)
      
    }
    
  • 定义代理

    var delegate: SecondViewControllerDelegate?
    
  • 在点击事件里执行代理

    if self.delegate != nil {
              
       delegate?.backValue(string: "卢梦如", value: 24)
              
    }
    
  • 在第一个页面里面遵守代理, 然后设置代理

    secondVC.delegate = self
    
  • 执行代理的方法

    func backValue(string: String, value: Int) {
          
         // 打印传入的数据
          
         print("\(string) is \(value)")
          
    }
    
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,926评论 1 10
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 在上一篇文章Swift中的变量和常量中我总结了一些自己对于变量和常量的认识,最近学习了闭包,顺便给大家分享一下关于...
    老板娘来盘一血阅读 18,773评论 16 87
  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,235评论 30 472
  • 今天的博客算是比较基础的,还是那句话,基础这东西在什么时候都是最重要的。说到函数,只要是写过程序就肯定知道函数是怎...
    攞你命3OOO阅读 608评论 0 1