TableSearchに基づく検索表示ビューコントローラーがあります。
通常、次の式は選択されたインデックス行を与えます:
self.tableView.indexPathForSelectedRow.row
ただし、検索モードでは、次を使用して選択した行を取得できます。
self.searchDisplayController.searchResultsTableView.indexPathForSelectedRow.row
上記のインデックスを使用して、処理の直後に (didSelectRowAtIndexPath の最後で) それぞれの行を (バックエンド配列から) 削除します。私が使用する配列は、Apple の例のとおり、listContent とfilteredListContent です。
私の問題は、検索モードで、次を使用して行を削除することです。
[self.filteredListContent removeObjectAtIndex: self.searchDisplayController.searchResultsTableView.indexPathForSelectedRow.row]
ただし、同時に、非検索モードに戻ったときにその行が表示されないため、同じオブジェクトを self.listContent から削除したいと考えています。
検索結果ビューでは、self.tableView.indexPathForSelectedRow.row が定期的に更新されないことがわかりました。代わりに、検索結果ビューに入る前に最後に選択された行が表示されます。
もちろん、両方のインデックスを相互参照できるように、コンテンツを配列オブジェクトに入れることもできます。しかし、それ以外に効率的な解決策はありますか? テーブルビューにはこのメカニズムが必要だと思います。
そして、はい、私はすでに私のviewWillAppearで次のことを行っています:
[self.tableView deselectRowAtIndexPath:self.tableView.indexPathForSelectedRow animated:YES];