从按钮访问viewcontroller

时间:2016-11-28 19:44:44

标签: ios swift delegates

我有ButtonClass,它实现了buttonTapped方法。

按钮本身位于视图上。我需要在按下按钮时添加一个额外的图层,但我无法在ButtonClass中访问self,因为self是一个按钮而不是视图...基本上我需要访问viewController中的self.view但是那是另一个班级。如果我创建一个像viewController()这样的新实例,它就不会有帮助,因为它不会'是同一个实例。

1 个答案:

答案 0 :(得分:1)

如果要从自定义按钮类添加buttonTapped方法,则需要创建委托,并在用户调用buttonTapped方法时调用委托方法。

在自定义按钮类

protocol YourCustomButtonDelegate {
    func changeSomethingInTheView()
}

class YourCustomButtonClass {

    var delegate: YourCustomButtonDelegate?

    func buttonTapped(_ sender: AnyObject) {
        if let delegate = delegate {
            delegate.changeSomethingInTheView()
        }
    }
}

在ViewController中

class ViewController: UIViewController, CustomCellDelegate {

    @IBOutlet weak var button: YourCustomButton!

    override func viewDidLoad() {
        super.viewDidLoad()

        button.delegate = self
    }

    func changeSomethingInTheView() {
        // write your code here...
    }
}