Ich habe eine tableview
, die ich aus einer JSON-Datei erstellt habe, die den aktivierten/deaktivierten Status der Zelle verfolgt. Das einzige Problem ist, dass, wenn ich eine SearchResults
Ansicht implementiert habe, meine Ergebnisse verzerrt sind, weil ich die Zelle im Indexpfad überprüfe, und ich den entsprechenden JSON-Eintrag (SubscribeStatus
) aktualisiere.TableView RowSelected mit SearchResultsTableView: Verfolgen des Zellenindex für CheckMark
var cell = tableView.CellAt(indexPath);
fragen sich, ob es eine andere Möglichkeit ist zu ändern oder einen anderen Ansatz, herauszufinden, die den korrekten Index für die Suchergebnisse angezeigt berücksichtigt. Hier ist ein Beispielcode unter:
public override void RowSelected(UITableView tableView,NSIndexPath indexPath)
{
var cell = tableView.CellAt(indexPath);
var value = this.tableviewController.TableView==search.SearchResultsTableView ? filteredDataList[indexPath.Row] : dataList[indexPath.Row];
if (value.Selected)
{
value.Selected = false;
var uncheckedImage = new UIImageView (UIImage.FromBundle("unchecked"));
cell.AccessoryView = uncheckedImage;
string documentsPath = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var localPath = Path.Combine (documentsPath, "marketnibble_sample_customers.json");
string json = File.ReadAllText (localPath);
dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject (json);
jsonObj ["Business"] [indexPath.Row] ["SubscribeStatus"] = false;
string output = Newtonsoft.Json.JsonConvert.SerializeObject (jsonObj);
File.WriteAllText (localPath, output);
}
else
{
value.Selected = true;
var checkedImage = new UIImageView (UIImage.FromBundle("checked"));
cell.AccessoryView = checkedImage;
string documentsPath1 = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
var localPath1 = Path.Combine(documentsPath1, "marketnibble_sample_customers.json");
string json = File.ReadAllText(localPath1);
dynamic jsonObj = Newtonsoft.Json.JsonConvert.DeserializeObject (json);
jsonObj["Business"][indexPath.Row]["SubscribeStatus"] = true;
string output = Newtonsoft.Json.JsonConvert.SerializeObject(jsonObj);
File.WriteAllText (localPath1, output);
}
cell.Selected = false;
tableviewController.TableView.ReloadData();
}
Ich habe von einer Art und Weise zu hören, dies zu tun mit cell.Tag()
, habe aber keine Ahnung, wo man anfangen soll. Was wäre der beste Weg, um dies zu erreichen?
Danke. Das ist der Weg! – pkozlowski