2011-06-29 15 views
0

私は、self.tableview内の選択されたセルからインデックスパスを取得して情報を表示する必要がある詳細ビューを持っています。私はNSFetchedResultsController self.tableviewも。また、検索を行うためにUISearchDisplayControllerを実装しました。UISearchDisplayControllerからself.tableview indexpathを取得するtableView indexpath

質問: UISearchDisplayControllerテーブルビューで選択したindexPathを元のself.tableviewのインデックスパスに変換するにはどうすればよいですか?またはNSArrayインスタンスを設定し、インデックスを見つけるためにそれをループする必要がありますか?それを行う最も効率的な方法は何ですか?あなたがのtableViewに持っている何で

-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath { 
    NSLog(@"display project details"); 
    if (tableView == self.table) { 
     [parentController projectSelectedFromList:indexPath.row]; 
    }else{ 
     NSInteger index; 
     //what to put here? To get the indexPath of the self.table from search tableview 
     [parentController projectSelectedFromList:index]; 
    } 
    [tableView deselectRowAtIndexPath:indexPath animated:YES]; 
} 

答えて

2

id selectedObject = [searchArray objectAtIndex:indexPath.row]; 
index = [sourceArray indexOfObject:selectedObject]; 

アイデアは非常に単純です。検索配列の選択されたオブジェクトを、インデックスパスの行に直接マップするように取得します。次に、ソースまたはマスター配列内のオブジェクトのインデックスを検索します。これは、あなたが望むインデックスを与えるはずです。

+0

ありがとうございます。それは基本的に私がやったことです。このトリックは、NSFetchedResultsControllerのindexPathForObjectメソッドについて調べています。 :) – randomor

0

ルック:cellForRowAtIndexPath:あなたのtableViewのデータソース(通常はtableViewControllerオブジェクト)のここ

はコードです。同様のチェックをして、標準のtableViewか検索テーブルビューを使用しているかどうかを判断すると仮定します。そうでない場合は、検索フィルタが有効ではありません。あなたのサイトに類似のコードが必要ですtableView:didSelectRowAtIndexPath :.

私がここでポイントを紛失している場合は、謝罪します...あなたはあなたの質問でもう少し言いたいことがあります。何の重複がないと仮定すると

+0

おかげで、私は働いて私の検索のテーブルビューを手に入れただけ検索テーブルビューで選択indexPathを変換する方法を探しています元のself.tableviewのindexpathに追加します。 :) – randomor

0

私は解決策を発見:

-(void)tableView:(UITableView*)tableView didSelectRowAtIndexPath:(NSIndexPath*)indexPath { 
NSLog(@"display project details"); 
if (tableView == self.table) { 
    [parentController projectSelectedFromList:indexPath.row]; 
    NSLog(@"indexpath at orignal tableview is: %@", [indexPath description]); 
}else{ 
    NSIndexPath *indexPathForOriginal = [resultsController indexPathForObject: [self.filteredResults objectAtIndex:indexPath.row]]; 
    NSInteger index = indexPathForOriginal.row; 
    [parentController projectSelectedFromList:index]; 
    NSLog(@"indexpath at search tableview is: %@", [indexPathForOriginal description]); 

} 
[tableView deselectRowAtIndexPath:indexPath animated:YES]; 

}入力用

関連する問題