6

我正在使用 Xamarin.iOS,但无法弄清楚如何更新单个单元格。在 WPF ListView 中,我可以只做一个绑定,让单元格的属性做一个 inotifypropertychanged,它会通过绑定自动发生。Xamarin.iOS 中是否有一些等效的功能?更新 UITableView 单元格而不只是擦除它们并重新添加它们似乎超级麻烦..

更新单个单元格的最佳方法是什么?

4

2 回答 2

19

假设您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);
于 2013-08-23T18:06:40.390 回答
3

创建一个子类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.

于 2013-08-23T17:19:55.913 回答