У меня есть tableview
, который я создал из файла JSON, который отслеживает статус проверки/неконтролируемой ячейки. Единственная проблема заключается в том, что когда я реализовал вид SearchResults
, мои результаты искажены, потому что я проверяю ячейку по пути индекса, и я обновляю соответствующую запись JSON (SubscribeStatus
).TableView RowSelected with SearchResultsTableView: отслеживание индекса ячейки для CheckMark
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()
, но не имеют понятия, с чего начать. Какой был бы лучший способ приблизиться к этому?
Спасибо. Это путь! – pkozlowski