2016-05-19 1 views
0

私はXamarin.iOSアプリケーションで作業しています。私はReactiveUIを初めて使用しています。Xamarin.iOS ReactiveUI ReactiveTableViewCellはバインドされていません

ReactiveTableViewCellIViewFor<>を実装するカスタムテーブルセルの一部のプロパティをバインドしようとしています。

これまでの例では、TextLabel.Textへのバインディングしか表示されていませんが、UIデザイナーで生成されたテーブルセルの他のプロパティにバインドしようとすると、何もバインド/表示されません。

セットアップはReactiveTableViewSource-Sampleと非常に似ていますが、デフォルトのTextLabel.Textではなくデザイナを使用して配置したラベルにバインドしようとしています。

ここで、テーブルをカスタムテーブルセルにバインドするための呼び出しです。

ViewModel.WhenAnyValue(vm => vm.SearchResults).BindTo<AgentSearchResult, AgentSearchResultsTableCell>(agentsTableView, 64, cell => cell.Initialize()); 

ここでは、カスタムtablecellのInitializeメソッドを示します。

public void Initialize() 
{ 
    this.WhenAnyValue(v => v.ViewModel.Name).BindTo(this, v => v.lblName.Text); // Doesn't Work 
    this.WhenAnyValue(v => v.ViewModel.Name).BindTo(this, v => v.TextLabel.Text); // Works 
    this.WhenAnyValue(v => v.ViewModel.Agency).BindTo(this, v => v.lblCompany.Text); 
    this.WhenAnyValue(v => v.ViewModel.Phone).BindTo(this, v => v.lblPhone.Text); 
    this.WhenAnyValue(v => v.ViewModel.Email).BindTo(this, v => v.lblEmail.Text); 

} 

tl; dr - デフォルトのTextLabel.Textがバインドされますが、追加のプロパティはバインドされず、表ビューに表示されません。

答えて

0

わかりました。これを実現できました。それはかなりシンプルな修正でしたが、私はそれについてのサンプル/ドキュメントを見ていませんでした。

問題は、デザイナで追加されたアイテムがすべてnullであることでした。ここで

は、私はデザイナーを使用してストーリーボードとそれを固定する方法である:

  1. あなたがアップ嘲笑プロトタイプセルの識別子を設定して確認してください。
    Set TableViewCell Identifier
  2. ViewControllerでCellKeyを含むTableViewのバインディングを更新します。

ViewModel.WhenAnyValue(vm => vm.SearchResults).BindTo<AgentSearchResult, AgentSearchResultsTableCell>(agentsTableView, new NSString("AgentSearchResultsCell"), 64, cell => cell.Initialize()); 

は、これらの変更を行った後、データバインディングは完全に働きました。

関連する問題