2016-10-14 10 views
0

私は委任を使用していますが、同じクラスを2つの異なる方法で使用しています。委任オブジェクトを識別する方法

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クラスでタグを追加することができますが、これは控えめなようです。より良い方法がありますか?

+0

は、ピッカーが== self.myView1 {}かどうかを確認できます。しかし、私はタグを追加すると最高だと思います。 – Sahil

+0

申し訳ありません私は自分のコードを明確にしました。 myView1とmyView2の両方に、デリゲートがSettingsViewControllerに設定されています。だから私は無しをチェックすることはできません。 – Pete

+0

'picker === myView1 {// 1で何かする} else if picker === myView2 {//何かで2}' – vacawama

答えて

1

colorSwitchedをID opeartor ===を使用して直接チェックすることができます。これは、2つのオブジェクト参照が両方とも同じオブジェクトインスタンスを参照しているかどうかをテストします。

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

    //myView1 
    } else { 

    //myView2 

    } 

}