2016-03-19 15 views
0

Uzmanlar, kullanarak UITableView Durum Kontrol kaydetXamarin.iOS - NSUserDefaults

Ben bir masa ve Xamarin.iOS içinde NSUserDefaults içinde masanın denetlenen durumunu kaydetmek istediğiniz kadar lütfen aşağıya bakın. NSUserDefaults (data.Selected = true) içinde kontrol edilen durumu kaydetmeye nasıl devam ederdiniz? İdeal olarak, istediğim, kontrol edilen her hücreden sonra, bu değeri NSUserDefaults'a kaydetmek istiyorum. Ardından, kullanıcılar uygulamayı sonlandırırsa, uygulamayı sonlandırmadan önce seçtikleri değerler yüklenir. Herhangi bir yardım büyük takdir edilecektir! Bu biraz sert görünüyor için NSUserDefaults kullanarak Ancak

// Store 
bool value = data.Selected; 
string key = string.Format("TableName{0}",indexPath.Row); // Some unique name 
NSUserDefaults.StandardUserDefaults.SetBool (value, key); 
// Fetch 
bool checked = NSUserDefaults.StandardUserDefaults.BoolForKey (key); 

: NSUserDefaults dan/oldukça kolay bir boolean getirilirken/

namespace Project 
{ 
public class TableSource : UITableViewSource 
{ 
public readonly static string cellIdentifier = "cellID"; 
readonly Model _model; 

    public TableSource(Model source) 
    { 
     _model = source; 
    } 

    public override nint NumberOfSections(UITableView tableView) 
    { 
     return 1; 
    } 

    public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath) 
    { 
     var value = _model[indexPath.Row]; 
     var cell = tableView.DequeueReusableCell (cellIdentifier) ?? new UITableViewCell (UITableViewCellStyle.Default, cellIdentifier) ; 
     cell.TextLabel.Text = value.Name; 
     cell.TextLabel.Font = UIFont.FromName ("Arial", 15f); 
     cell.Accessory = value.Selected ? UITableViewCellAccessory.Checkmark : UITableViewCellAccessory.None; 
     return cell; 
    } 

    public override nint RowsInSection(UITableView tableview, nint section) 
    { 
     return _model.Count; 
    } 

    public override void RowSelected(UITableView tableView,NSIndexPath indexPath) 
    { 
     var cell = tableView.CellAt(indexPath); 
     var data = _model[indexPath.Row]; 

     if (data.Selected) 
      data.Selected = false; 
      cell.Accessory = UITableViewCellAccessory.None; 
      Toast.MakeText(data.Name.ToString() + " Not Checked", Toast.LENGTH_LONG).SetGravity(ToastGravity.Center).Show(); 
     } 

     else 
     { 
      data.Selected = true; 
      cell.Accessory = UITableViewCellAccessory.Checkmark; 
      Toast.MakeText(data.Name.ToString() + " Checked", Toast.LENGTH_LONG).SetGravity(ToastGravity.Center).Show() 

     } 

     cell.Selected = false; 
     tableView.ReloadData(); 
    } 

} 
} 
+1

Ve soru nedir? – jbm

+0

Ne yapmak istediğinizi belirtin ve bazı kodlar yayınladınız, ama sorun nedir? asıl soru nedir? lütfen [sor] ve [mcve] 'ye bakın –

+0

Üzgünüm, sorumu açıklamak için yukarıdaki yanıtımı düzenledim. – pkozlowski

cevap

1

değerleri kaydetme:

Aşağıdaki TableSource dersim var. Neden kullanıcının seçimini App's Cache klasöründeki bir JSON dosyasına kaydetmeye bakmıyorsunuz?

+0

Çok teşekkürler! Seçimi takip etme yaklaşımını bir JSON dosyasıyla aldım. Mükemmel çalışıyor. – pkozlowski

+0

@pkozlowski Rica ederim. :) –