1

EDIT:以下の回答に感謝します。 UISearchDisplayControllerにテーブルをリロードすることができなかったので、検索テキストが変更されたときにフィルタメソッドを呼び出して、テーブルにデータを格納するために使用する配列を変更しました。UISearchDisplayControllerデリゲートからcellForRowAtIndexPathが呼び出されていません


(これはCocos2dを使っている)、次のように私はプログラム的UITableViewUISearchDisplayControllerを追加しました。 cellForRowAtIndexPathは、ビューがロードされたときに最初に呼び出されますが、YESが返されると、cellForRowAtIndexPathは呼び出されません。

selfUIViewControllerある)

table = [[UITableView alloc] initWithFrame:CGRectMake(0.0f, 80.0f, 480.0f, 260.0f)]; 
    table.delegate = self; 
    table.dataSource = self; 
    [[[CCDirector sharedDirector] openGLView] addSubview:table]; 

    UISearchBar *searchBar = [[UISearchBar alloc] initWithFrame:CGRectZero]; 
    [searchBar sizeToFit]; 
    searchBar.delegate = self; 
    searchBar.placeholder = @"Search"; 
    table.tableHeaderView = searchBar; 

    UISearchDisplayController *searchDC = [[UISearchDisplayController alloc] initWithSearchBar:searchBar contentsController:self]; 
    searchDC.delegate = self; 
    searchDC.searchResultsDataSource = self; 
    searchDC.searchResultsDelegate = self; 

//  [searchBar release]; 
//  [searchDC release]; 

文字は、以下の代表者が呼び出され、検索バーに入力されると、numberOfRowsInSectionが呼び出されますが、cellForRowAtIndexPathが呼び出されることはありません。

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope 
{ 
    // Do filtering and add to the search array 
} 

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString 
{ 
    [self filterContentForSearchText:searchString scope:[[controller.searchBar scopeButtonTitles] objectAtIndex:[controller.searchBar selectedScopeButtonIndex]]]; 

    return YES; 
} 

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption 
{ 
    [self filterContentForSearchText:[controller.searchBar text] scope:[[controller.searchBar scopeButtonTitles] objectAtIndex:searchOption]]; 

    return YES; 
} 
+0

最初に、テーブルの結果配列が空でないことを確認してください。次に、検索バーデリゲートから '[table reloadData];を呼び出すようにしてください。 –

答えて

2

だけで物事を次のチェック:

1)テーブルビューのデリゲート&データソースが正しく設定されています。

2)次のデータは空ではありません。

3)チェック方法numberOfRowsInSection:正しい値を返します。

関連する問題