2017-05-31 13 views
0

ViewControllerの中にカスタムビューtouchableViewがあります。 touchableViewは、デリゲートプロトコル(ViewControllerdelegate)を介してそのプロパティの変更がViewControllerに通知されます。2つのクラス間の双方向通信を有効にする

touchableViewのプロパティをViewController(これは逆です)から変更する最も良い方法は何ですか? 2つのクラス間に双方向デリゲート関係を作成する方法はありますか?単に

+3

あなたはtouchableViewオブジェクトを持っているので、あなたはそのオブジェクトを使って何をしたいのですか? – raki

+0

あなたは正しいです。私はまっすぐ考えていなかったし、プロトコルを使ったコミュニケーションに多くの焦点を当てていた。 – Marmelador

答えて

1

すでにあるViewControllertouchableViewインスタンスを持っていると仮定すると、あなたはそのプロパティとメソッドを呼び出す-or GET- /設定することができるはずです。例えば

、あなたがtouchableViewクラスで以下のメソッドを持っていることを前提としていますので、

let touchableView = TouchableView.fromNib() 

// for example 
touchableView.myProperty = "Hello" 

I

class func fromNib() -> TouchableView { 
    return Bundle.main.loadNibNamed(String(describing: self), owner: nil, options: nil)![0] as! TouchableView 
} 

あなたは単にすることができるはずTouchableViewに01と呼ばれる文字列プロパティがあるとします...


備考:

何らかの理由で、私はプロパティオブザーバーTouchableViewの一部を実装することをお勧め:

プロパティオブザーバーは観察し、変化に対応プロパティの 値です。新しい値がプロパティの現在の の値と同じであっても、プロパティオブザーバは、プロパティの値が に設定されるたびに呼び出されます。

これらはカスタムクラスで実装すると便利かもしれません。

var myProperty: String = "Initial Value" { 
    willSet { 
     print("About to set value to: \(newValue)") 
    } 
    didSet { 
     backgroundColor = UIColor.red 
    } 
} 

さらに読書:

明確にするために、のは、ビューの背景色に影響を与えるべきである myPropertyの値を編集した場合、それはとして実装されるかもしれないという-for instance-を考えてみましょう

双方向バインディング(MVVMの実装)の高度なアプローチをお探しの場合は、this articleをチェックしてください。

さらに簡単なフレームワークのために、RxSwiftのようなそのようなアプローチに役立ついくつかのフレームワークを見てみることをお勧めします。ReactiveKit/Bondをチェックしてください。

関連する問題