如何在主VC中访问自定义视图按钮操作

时间:2018-04-09 14:44:38

标签: ios swift uiview uibutton xib

我创建了一个自定义视图xib并给出了该视图类。现在我在主vc中查看并给出该类,但现在我想在我的主vc中访问自定义视图按钮操作方法。那我怎么能这样做呢?

这是我的自定义视图

import UIKit

class TextCustomisationVC: UIView {
    @IBOutlet var contentView: UIView!

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.commonInit()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.commonInit()
    }

    private func commonInit(){
        Bundle.main.loadNibNamed("TextCustomisationVC", owner: self, options: nil)
        addSubview(contentView)
        contentView.frame =  self.bounds
        contentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    }

    @IBAction func btnCloseCustomisation_Click(_ sender: Any) {
    }

    @IBAction func btnApplyCustomisation_Click(_ sender: Any) {
    }
}

image here

现在我在我的主VC中创建了一个插座,然后给同一个类我可以访问那些类插座但是现在我想访问上面的按钮操作方法那么我该怎么做呢?

2 个答案:

答案 0 :(得分:0)

你可以尝试

let cusView = TextCustomisationVC(frame:///)

如果在函数内使用btn sender

cusView.btnCloseCustomisation_Click(cusView.closeBtn)

否则发送任何虚拟按钮

cusView.btnCloseCustomisation_Click(UIButton())

修改

protocol CustomTeller {
    func closeClicked(UIButton)
}

class TextCustomisationVC: UIView {

    var delegate: CustomTeller?

    @IBAction func btnCloseCustomisation_Click(_ sender: UIButton) {
        self.delegate?.closeClicked(sender:sender)
    }
}

//在mainVC中

let cusView = TextCustomisationVC(frame:///)
cusView.delegate = self

并实施

func closeClicked(sender:UIButton) {

      // close button called 

}

答案 1 :(得分:0)

您可以在此处使用委托,您可以在主VC中实施。

创建一个这样的协议:

protocol ButtonActionDelegate {
   func closeButtonPressed(_ sender:UIButton)
   func applyButtonPressed(_ sender:UIButton)
}

然后在视图中创建委托的实例,如下所示:

var delegate:ButtonActionDelegate?

在主VC中实现此委托,如下所示:

extension mainVC : ButtonActionDelegate {

    func closeButtonPressed(_ sender: UIButton) {
    }
    func applyButtonPressed(_ sender: UIButton) {
    }

}

然后你可以像这样分别调用委托方法:

@IBAction func btnCloseCustomisation_Click(_ sender: Any) {
    self.delegate?.closeButtonPressed(sender)
}

@IBAction func btnApplyCustomisation_Click(_ sender: Any) {
    self.delegate?.applyButtonPressed(sender)
}