2013-08-23 8 views
5

मैं Xamarin.iOS का उपयोग कर रहा हूं और यह पता नहीं लगा सकता कि एकल सेल को कैसे अपडेट किया जाए। डब्ल्यूपीएफ लिस्ट व्यू में, मैं बस बाध्यकारी कर सकता हूं और सेल के गुणों को एक inotifypropertychanged कर सकते हैं और यह स्वचालित रूप से बाध्यकारी के माध्यम से होता है। Xamarin.iOS में कुछ समकक्ष कार्यक्षमता है? यह UITableView कोशिकाओं को केवल उन्हें बाहर निकालने और उन्हें फिर से जोड़ने के बिना सुपर बोझिल लगता है ..Xamarin.iOS UITableView, आप एक सेल को अपडेट करने के लिए कैसे मजबूर करते हैं?

व्यक्तिगत कक्षों को अपडेट करने का सबसे अच्छा तरीका क्या है?

उत्तर

16

मानते हुए अपने 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); 
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 में अपने कस्टम सेल की वापसी उदाहरणों बनाने की आवश्यकता होगी।

+2

यह एक बहुत ही बोझिल समाधान है, नहीं है कि दृश्य (सेल) डेटा प्रदर्शित कर रहा है उल्लेख करने के लिए। यह चीजों को बहुत जटिल बनाता है, विशेष रूप से इस तथ्य पर विचार करते हुए कि सेल डेटा को अन्य डेटा प्रदर्शित करने के लिए पुन: उपयोग किया जाना चाहिए। –

+4

मैं असहमत हूं; मुझे लगता है कि यह एक अच्छा और आत्मनिर्भर समाधान है जो अपने स्वयं के वर्ग के भीतर encapsulated सेल के लिए सभी तर्क रखता है। यह सेल को खुद को अद्यतन करने के लिए जिम्मेदार होने की अनुमति देता है, न कि तालिका में। सेल इंस्टेंस का पुन: उपयोग करने से रोक नहीं है। –

संबंधित मुद्दे