【发布时间】:2016-05-25 05:46:30
【问题描述】:
我有一个tableview,它是从一个跟踪单元格的选中/未选中状态的 JSON 文件创建的。唯一的问题是,当我实现SearchResults 视图时,我的结果有偏差,因为我检查了索引路径处的单元格,并且我更新了相应的 JSON 条目 (SubscribeStatus)。
var cell = tableView.CellAt(indexPath);
想知道是否有另一种修改方法,或者找出另一种方法来考虑显示的搜索结果的正确索引。下面是一些示例代码:
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 ();
}
我听说过使用cell.Tag() 执行此操作的方法,但不知道从哪里开始。解决这个问题的最佳方法是什么?
【问题讨论】:
标签: c# json uitableview xamarin.ios uisearchdisplaycontroller