2013-08-23 14 views
5

Xamarin.iOS kullanıyorum ve tek bir hücreyi nasıl güncelleyeceğimi anlayamıyorum. WPF ListView'de, yalnızca bir bağlantı yapabilir ve hücrenin özelliklerini bir inotifypropertychanged yapabilir ve otomatik olarak bağlanma yoluyla olur. Xamarin.iOS bazı eşdeğer işlevsellik var mı? BuXamarin.iOS UITableView, bir hücrenin güncellenmesi için nasıl zorlarsınız?

bireysel hücrelerin güncelleştirmek için en iyi yolu nedir .. sadece onları silerek ve onları yeniden eklemeden UITableView hücreleri güncellemek için süper hantal görünüyor?

cevap

16

sizin UITableView bir "tableView" değişkeninde saklanır varsayarak:

NSIndexPath[] rowsToReload = new NSIndexPath[] { 
    NSIndexPath.FromRowSection(1, 0) // points to second row in the first section of the model 
}; 
tableView.ReloadRows(rowsToReload, UITableViewCellRowAnimation.None); 
3

UICell'un bir alt sınıfını oluşturun ve burada INotifyPropertyChanged'a bağlayın.

Model nesnesinin UICell görüntülediği ortak bir özellik oluşturabilirsiniz. Model değişiklikleri, bir özellik değişir ya ne zaman

Sonra

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; 
    } 
} 

Daha sonra UITableViewDataSource yılında özel hücrenin dönüş örneklerini oluşturmanız gerekir ... hücrenin görüntü özelliklerini güncelleyin.

+2

Bu görüş (hücre) görüntülediği verileri tutan belirtmeyi çok hantal bir çözüm değildir. Özellikle hücre örneğinin diğer verileri görüntülemek için yeniden kullanılması gerektiği göz önüne alındığında, işleri çok karmaşık hale getirir. –

+4

Katılmıyorum; Bence kendi sınıfında kapsüllenmiş hücrenin tüm mantığını koruyan güzel ve bağımsız bir çözüm. Tabloyu değil, hücrenin kendisini güncellemekten sorumlu olmasını sağlar. Yeniden kullanılmakta olan hücre örneğini durduran hiçbir şey yok. –

İlgili konular