1

UISearchDisplayController をコントローラーの xib に統合しました。私が目指している基本的な機能は、テーブルのヘッダーに検索バーを配置し、検索表示を示すナビゲーション バーにボタンを配置することです。

私が立ち往生していること:キャンセルに触れたときに、検索バーを非表示にしたい(検索バーではなくインデックス0が一番上に表示されるようにテーブルを維持する)が、表示されたままになり、理由がわかりません( 3番目の画像を参照してください)。キャンセルボタンがタッチされたときに常に検索バーを非表示にする方法のアイデア (画像 1 を参照)。

私が試したこと:

  1. tableview contentOffset を 44 に設定します。これは最初は機能します。
  2. [tableview scrollToRowAtIndexPath:....] を呼び出していますが、何もしていないようです。
4

5 に答える 5

2

検索バーをそのようなプロパティとして宣言した場合

@property(nonatomic, retain)UISearchBar *searchBar;

設定できます

tableView.tableheader = nil;

そして元に戻す

tableView.tableHeader = searchBar;

また必要になったとき。

于 2013-08-23T09:51:18.440 に答える
2

これを試して:

- (void)viewWillAppeared:(BOOL)animated
{
        [self hidesSeachBar];
        [super viewWillAppeared:animated];
}

- (void)hidesSearchBar
{
        CGSize searchSize = self.searchDisplayController.searchBar.bounds.size;
        //not complete
        [self.tableView setContentOffset:CGPointMake(0, searchSize.height)];
}

- (void) searchDisplayControllerDidEndSearch:(UISearchDisplayController *)controller
{
    //Your code

    [self.tableView reloadData];
    [self hidesSearchBar];
}
于 2011-03-30T04:28:04.660 に答える
1

コンテンツ オフセットを設定することは、それを非表示にする方法であり、検索が終了したときにそれを行う必要があります。私はこのようなものを使用しています:

- (void) searchDisplayControllerWillEndSearch:(UISearchDisplayController*)controller
{
    [self hideSearchBar];
}


- (void) hideSearchBar
{
    self.table.contentOffset = CGPointMake( 0, self.searchBar.frame.size.height );  
}
于 2012-06-29T00:47:02.440 に答える
0

キャンセル時に検索バーを非表示にするには、UISearchBarDelegateメソッドを呼び出す必要があります。

(void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    if(searchTask)[searchTask cancel];

    [self.searchResults removeAllObjects];
    [self.searchDisplayController.searchResultsTableView reloadData];

   //reload you table here
}

ありがとう

于 2015-08-05T07:00:22.797 に答える
0

UISearchDisplayController の検索バーを非表示にするには、非アクティブに設定する必要があります。これにより、ナビゲーションバーも再表示されます

あなたの場合、UISearchBarDelegate プロトコルを採用してから、次のことを確認する必要があります。

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    [self.searchDisplayController setActive:NO animated:YES];
}
于 2012-05-20T14:56:04.113 に答える