UICell
のサブクラスを作成し、そこでINotifyPropertyChanged
にバインドします。
UICell
が表示しているモデルオブジェクトのパブリックプロパティを作成できます。
そして、モデル変更、または時にプロパティの変更セルの表示プロパティを更新...
public class CarCell : UITableViewCell
{
private Car car;
public Car Car
{
get { return this.car; }
set
{
if (this.car == value)
{
return;
}
if (this.car != null)
{
this.car.PropertyChanged -= HandlePropertyChanged;
}
this.car = value;
this.car.PropertyChanged += HandlePropertyChanged;
SetupCell();
}
}
private void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
{
SetupCell();
}
private void SetupCell()
{
this.TextLabel.Text = this.car.Title;
}
}
あなたは、あなたのUITableViewDataSource
でカスタムセルのリターン・インスタンスを作成する必要があります。
これは、ビュー(セル)は、それが表示されるデータを保持していることに言及し、非常に面倒なソリューションではありません。特に、セルインスタンスを他のデータを表示するために再利用する必要があることを考慮すると、多くのことが複雑になります。 –
私は同意しません。自分のクラスにカプセル化されたセルのすべてのロジックを保持する素晴らしい自己完結型ソリューションだと思います。これにより、セルはテーブルではなく、自身を更新する役割を担います。再利用されるセルインスタンスの停止は何もありません。 –