如何识别委托对象

时间:2016-10-14 10:36:31

标签: swift delegation

我正在使用委托,并且以两种不同的方式使用同一个类。

    protocol ColorSwitchDelegate {
        func colorSwitched(picker: ColorSwitch, color: ColorChoice)
    }

    class ColorSwitch: UIView {    
        var delegate: ColorSwitchDelegate?

    func doSomething() {
    delegate?.colorSwitched(picker: self, color: color)
    }
    }

    class SettingsViewController: UIViewController, ColorSwitchDelegate {

    @IBOutlet weak var myView1: ColorSwitch!
    @IBOutlet weak var myView2: ColorSwitch!

    func viewWillAppear(_ animated: Bool) {

     myView1.delegate = self
     myView2.delegate = self
    }



  func colorSwitched(picker: ColorSwitch, color: ColorChoice) {
            // I want to find out if myView1 or myView2 is the delegating object
    }
    }

我想确定哪个视图(myView1或myView2)是委托人。我可以在ColorSwitch类中添加一个标签,但这似乎不太优雅。还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用identity opeartor ===直接签入colorSwitched,它会测试两个对象引用是否都引用同一个对象实例。

func colorSwitched(picker: ColorSwitch, color: ColorChoice) {
   if picker === self.myView1 { 

     //myView1
    } else {

     //myView2

    } 

}