https://github.com/mutech/aka-ios-beaconをご覧ください。
(#1) については、XAML や HTML バインディングと同じように使用します。バインド式は、検査可能なプロパティを使用して Interface Builder で定義されます (コードで実行できますが、MVVM の目的の多くを無効にします)。そのため、KV 観測を設定または管理する必要はありません。透過的に (そして確実に) 行われます。
Beacon は、バインディングがターゲットとその特定のニーズを認識できるように、ほとんどのビューを拡張します。更新頻度について心配する必要はありません。複雑なバインド (fe TableView データ ソース) の場合、アニメーションがスムーズになり、不要な作業が回避されるように、ビジュアルの更新は通常延期されます。繰り返しますが、すべてではないにしてもほとんどの場合、これは透過的です。ただし、これが本当に#2と#3に答えるかどうかはわかりません。
より良い構文: インターフェイス ビルダー プロパティでバインド式を定義することにより、バインドをセットアップします。たとえば、UILabel テキスト バインディングの単純なバインディング式は次のようになります。
currentPerson.name
ラベルのより複雑なバインディングは次のようになります。
account.amount { numberFormatter: { numberStyle: $enum.CurrencyStyle } }
テーブル ビュー データ ソースの非常に複雑なバインディングは、次のような匂いがします。
[
arrayForFirstSection { headerTitle: "First Section" },
fetchedResultsForSecondSection { headerTitle: "Second Section" }
] {
cellMapping: { [
{ predicate: <MyModelClass1>, cellIdentifier: "Model1Cell" },
{ predicate: "SELF < $value" { value: 0 }, cellIdentifier: "NegativeNumberCell"}
] }
}
それが恐ろしく見える場合は、テーブル ビューをリンクするために必要な作業はこれだけであることに注意してください。UITableViewDataSource と UITableViewDelegate はバインディングによって実装されます。ただし、デリゲート メソッドを提供し、ほとんど制限なくテーブルビューを調整することはできます。
ビュー コントローラーは、ビューのバインディング式で参照している (キー値のコーディングに準拠した) プロパティを提供するだけです。