tableView があり、行の indexPath を配列に追加してからチェックマークを追加することで、どの行が選択されたかを追跡しています。
cellForRowAtIndexPath メソッドでこのコードを使用してその配列を繰り返し処理していますが、魅力的に機能します。
for (NSIndexPath * element in indexArray)
if ([indexPath compare:element] == NSOrderedSame) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
ただし、その行の値も取得して、他の目的のために別の配列に入れています。どちらの場合もこの 2 番目の配列を使用すれば、コードを単純化できると考えましたが、上記のコードをどのように書き直すかわかりません。概念はわかりましたが、上記のコードは indexPath 比較を使用しているため、文字列を配列と比較する必要があります。
変更方法がわからないのは、その「if」行です。
for (NSString *element in valueArray) {
if ([indexPath compare:element] == NSOrderedSame) {
cell.accessoryType = UITableViewCellAccessoryCheckmark;
}
考え?ありがとう。
詳細情報を編集
私の配列には、変更されない 400 の一意の項目が含まれています。それらの indexPath を配列に追加し、それを繰り返してチェックマークを追加するとうまくいきます。代わりに配列の文字列値を使用して繰り返したい理由は、tableView に searchBar を追加したいからです。
その searchBar を追加した後、検索を行うと、searchResultsTableView は 400 の一意のアイテムをその検索に一致するいくつかのアイテムに切り詰めます。ここで、検索で返された最初の行を選択するとします。コードは、チェックマークを追跡するために、その行の indexPath を indexArray に追加します。インデックス 0,0 を追加します。
しかし、検索モードをキャンセルすると、searchResultsTableView で 0,0 を選択したため、最初の行 0,0 が tableView でチェックされます。私がどこに行くのか分かりますか?したがって、この問題を軽減するために、 indexPath の代わりに行の文字列を追跡することを考えました。
もっとはっきり?