は、簡単な方法でこれを起こる、私のコードでは、こう述べています。検索ディスプレイコントローラの検索で選択されたテーブルビュー全体から行を知るには?私は私のアプリで検索したときのタイトルとして
stations = [barcelona, madrid, valencia, badajoz]
私は「BA」を入力したとき、それは示しています
mysearch = [barcelona, badajoz]
私がしたいですbadajozを選択すると、その行は、ステーションが3番のポジションにあるときに1の位置に戻ります。
何か考えてください。
PD:コード
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];
self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate];
}
#pragma mark - UISearchDisplayController delegate methods
-(BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchString:(NSString *)searchString
{
[self filterContentForSearchText:searchString
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:[self.searchDisplayController.searchBar
selectedScopeButtonIndex]]];
return YES;
}
- (BOOL)searchDisplayController:(UISearchDisplayController *)controller
shouldReloadTableForSearchScope:(NSInteger)searchOption
{
[self filterContentForSearchText:[self.searchDisplayController.searchBar text]
scope:[[self.searchDisplayController.searchBar scopeButtonTitles]
objectAtIndex:searchOption]];
return YES;
}
EDIT検索する関連:私は 以下の答えを使用して自分のコードを編集した - (無効)にtableView:(のUITableView *)のtableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { のNSLogを( @ "押す..."); NSUInteger row = [indexPath row];検索ビューの前に//古いコード
//index from the search
id searchResult = [searchResults objectAtIndex:row];
int indexForResult = [ListaEstaciones indexOfObject:searchResult];
//more stuff
EDIT: 今では、この例のために働く:リストでそれがうまく検索すべての要素で、私はそれがうまく機能し、検索を開始したとき、問題はその停留所であります
- (void)filterContentForSearchText:(NSString*)searchText
scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];
self.searchResults = [self.allItems filteredArrayUsingPredicate:resultPredicate];
searching = YES;
しかし、私ドン:このコードでは、私はYESに検索ブール変数を変更するので、検索し、私はすべての要素のリストの行は、それはまだ前に、検索項目のリストのデ・インデックスを使用して選択し、これが起こりますすべての値のリストに戻ると、検索値をNOに変更する場所がわかりません。助言がありますか?どうもありがとう。 EDIT 2:あなたは、配列内のインデックスを見つけることができますオブジェクトを持っている場合は、このウェブサイトhttp://engineeringtheworld.wordpress.com/2011/04/11/detecting-when-clear-is-clicked-in-uisearchbar-x-button/
これは問題ありません。何も検索せずに行を選択すると、エラーが発生します。ここでは、行を保存する部分のコードです。 NSUInteger row = [indexPath row]; //検索コントローラを配置する前に選択した行 //何かをブラウズした場合// id searchResult = [searchResults objectAtIndex:row]; int indexForResult = [ListAEstaciones indexOfObject:searchResult];なにか提案を? –
どのようなエラーが出ますか?このコードはどこに行きますか?このような応答が長い場合は、質問を編集するのが最善かもしれません:) – jackslash
編集中! ;) –