美文网首页
Swift使用闭包传值

Swift使用闭包传值

作者: 咸鱼有只喵 | 来源:发表于2018-04-08 21:19 被阅读737次

    我们经常遇到这样一个场景:
    自定义的View类中需要定义点击事件,跳转到新的视图控制器,而这时候就需要我们定义一个协议,让ViewController去实现对应的方法;
    使用代理传值是我们常用的办法,同时我们还可以使用闭包,这样的写法更加简单直观,也更便于理解:

    //
    //  ViewController.swift
    //  DemoLearn
    //
    //  Created by LY on 2018/4/8.
    //  Copyright © 2018年 刘. All rights reserved.
    //
    
    import UIKit
    
    //使用闭包传值
    typealias MyBlock = (_ message:UIViewController)->(Void)
    
    
    class mv:UIView{
        var mb:MyBlock?
        
        //假装我有一个button添加了点击事件
        
        
       @objc func buttonClick(){
        if mb != nil{
            mb!(SecendViewController())
            
        }
        }
        
    }
    
    class ViewController: UIViewController {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            let vv  = mv()
            self.view.addSubview(vv)
            vv.mb = {(message:UIViewController)->(Void) in
                self.present(message, animated: true, completion: nil)
                
            }
            // Do any additional setup after loading the view, typically from a nib.
        }
    
        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
            // Dispose of any resources that can be recreated.
        }
    
    
    }
    
    
    

    相关文章

      网友评论

          本文标题:Swift使用闭包传值

          本文链接:https://www.haomeiwen.com/subject/bbnmhftx.html