6

を実装UITableViewしています。searchDisplayController私は持っている

tableView.backgroundColor = [UIColor clearColor];

self.searchDisplayController.searchResultsTableview.backgroundColor = [UIColor clearColor];

検索フィールドにテキストを入力すると、検索結果は正常に表示されますが、結果のテーブルの背景が透明でtableviewあるためtableview、検索結果テーブルに と が表示されます。tableViewsearchField がいつ編集を開始したかを非表示にしたい。私が試してみました

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

    return YES;
}

しかし、それはtableViewでsearchBarを隠します。修正方法は?

4

3 に答える 3

2

tableView検索インターフェイスが表示されているときに0セクションを返すように、のデータソースを設定できます。

- (NSInteger) numberOfSectionsInTableView: (UITableView *) tableView
{
    if (self.searchDisplayController.active && 
        (tableView != self.searchDisplayController.searchResultsTableview))
        return 0; // return 0 for bottom table view if search interface is active
    else
        return <your usual number of sections>
}

そして、テーブルビューを非表示にする代わりに、[tableView reloadData]すべてのコンテンツを非表示にすることができます。次に、検索が終了したら、テーブルビューをもう一度リロードして、コンテンツを再度表示します。

ただし、テーブルビューを再ロードすると、すべてのテーブルビューのセルとテーブルビューのコンテンツオフセットがリセットされるため、場合によってはそれを行うのは得策ではない可能性があります。

または、テーブルビューの表示されているすべてのセルを繰り返し処理して、次のように非表示にすることもできます。

for (UITableViewCell *cell in tableView.visibleCells)
{
     cell.hidden = YES;
}
于 2013-02-11T07:25:50.870 に答える
2

最初に私はあなたが追加することを知っていsearchDisplayControllerますUITableView.

UISearchDisplayController on を追加したため、非表示にしてから非表示にする場合は、それを削除UISearchDisplayControllerしてView Controllerに追加してください。UITableViewUITableViewUISearchDisplayControllerUITableView

ありがとう :)

于 2013-02-11T07:20:17.197 に答える
0

まず、テーブルアウトレットを作成し、テーブルに接続してから、このコード行を試してください

tableView.hidden=TRUE;

それが動作します....

于 2013-02-11T07:14:13.547 に答える