У меня есть контроллер представления отображения поиска, основанный на TableSearch .
Обычно следующее выражение дает выбранную строку индекса:
self.tableView.indexPathForSelectedRow.row
Однако в режиме поиска выбранную строку можно получить, используя:
self.searchDisplayController.searchResultsTableView.indexPathForSelectedRow.row
Я использую приведенные выше индексы для удаления соответствующих строк (из моих серверных массивов) вскоре после некоторой обработки — в конце didSelectRowAtIndexPath. Я использую массивы listContent и filteredListContent — как в примере с Apple.
Моя проблема в том, что в режиме поиска я удаляю строку, используя:
[self.filteredListContent removeObjectAtIndex: self.searchDisplayController.searchResultsTableView.indexPathForSelectedRow.row]
Однако в то же время я также хочу удалить тот же объект из self.listContent, потому что, когда я возвращаюсь в режим без поиска, эта строка не должна отображаться.
Я видел, что self.tableView.indexPathForSelectedRow.row не обновляется регулярно при просмотре результатов поиска. Вместо этого он дает последнюю выбранную строку перед входом в представление результатов поиска.
Конечно, я могу поместить некоторый контент в свои объекты массива, чтобы можно было ссылаться на оба индекса. Но есть ли какое-либо эффективное решение, кроме этого? Я думаю, что табличный вид должен иметь этот механизм.
И да, я уже делаю следующее на мой взглядWillAppear:
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:YES];