swift에서 패키지 사용

3333 단어
swift의 클립은 OC의 블락과 원리가 비슷합니다. 본고는 작은 데모로 구체적인 사용법을 보여 줍니다. 먼저view를 사용자 정의한 다음에 클립을 정의합니다. 마지막으로viewcontroller에서view를 만들고 클립 전송 값을 사용합니다.
사용자 정의view 코드:

import UIKit

//typealias IndexBlock  = (index:NSInteger)->Void

class CustomView: UIView {
    
    var IndexBlock:((index:NSInteger)->()) = {_ in }

    /*
    // Only override drawRect: if you perform custom drawing.
    // An empty implementation adversely affects performance during animation.
    override func drawRect(rect: CGRect) {
        // Drawing code
    }
    */
    
//    var callBack:IndexBlock!
    
    var button1:UIButton?
    var button2:UIButton?
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        
        setupUI()
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    func setupUI() {
        
        self.button1 = UIButton.init(type: .Custom)
        self.button1?.backgroundColor = UIColor.redColor()
        self.button1?.frame = CGRectMake(0, 65, 60, 30)
        self.button1?.tag = 1
        self.button1?.addTarget(self, action: #selector(buttonClick), forControlEvents: .TouchUpInside)
        self.addSubview(self.button1!)
        
        self.button2 = UIButton.init(type: .Custom)
        self.button2?.backgroundColor = UIColor.blueColor()
        self.button2?.frame = CGRectMake(0, 100, 60, 30)
        self.button2?.tag = 2
        self.button2?.addTarget(self, action: #selector(buttonClick), forControlEvents: .TouchUpInside)
        self.addSubview(self.button2!)
        
    }
    
    func buttonClick(sender:UIButton){
        
//        self.callBack!(index: sender.tag)
        self.IndexBlock(index: sender.tag)
    }
    

}

viewcontroller의 코드:

import UIKit

class ViewController: UIViewController {

    var cv:CustomView?
    
    var label:UILabel!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        configViews()
        
        
    }
    
    func configViews() {
        
        self.title = "  "
        
        self.view.backgroundColor = UIColor.whiteColor()
        
        setupData()
        
        
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

}

extension ViewController {
    
    func setupData(){
        self.cv = CustomView.init(frame: CGRectMake(10, 10, 300, 300))
        self.cv!.backgroundColor = UIColor.yellowColor()
        self.view.addSubview(self.cv!)
        
        self.label = UILabel.init(frame: CGRectMake(10, 360, 200, 30))
        self.label.backgroundColor = UIColor.redColor()
        self.view.addSubview(self.label)
        
        /*
        self.cv?.callBack = {(index:NSInteger)->() in
            self.label.text = String(index)
            }
            */
        self.cv?.IndexBlock = {(index:NSInteger)->() in
            self.label.text = String(index)

            }
 
        }
    
}


코드에서 클립은 두 가지 문법을 사용했는데 하나는 일반적인 문법이고 하나는 사용했다typealias. 그러나 나는 그 중의 한 가지 문법을 주석해 버렸다. 두 가지 실현 효과는 똑같기 때문에 자신의 습관에 따라 어떤 문법을 선택할 수 있다.

좋은 웹페이지 즐겨찾기