我正在使用 Xamarin.iOS,但无法弄清楚如何更新单个单元格。在 WPF ListView 中,我可以只做一个绑定,让单元格的属性做一个 inotifypropertychanged,它会通过绑定自动发生。Xamarin.iOS 中是否有一些等效的功能?更新 UITableView 单元格而不只是擦除它们并重新添加它们似乎超级麻烦..
更新单个单元格的最佳方法是什么?
我正在使用 Xamarin.iOS,但无法弄清楚如何更新单个单元格。在 WPF ListView 中,我可以只做一个绑定,让单元格的属性做一个 inotifypropertychanged,它会通过绑定自动发生。Xamarin.iOS 中是否有一些等效的功能?更新 UITableView 单元格而不只是擦除它们并重新添加它们似乎超级麻烦..
更新单个单元格的最佳方法是什么?
假设您UITableView
存储在“tableView”变量中:
NSIndexPath[] rowsToReload = new NSIndexPath[] {
NSIndexPath.FromRowSection(1, 0) // points to second row in the first section of the model
};
tableView.ReloadRows(rowsToReload, UITableViewCellRowAnimation.None);
创建一个子类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
.