キャンセルがタッチされたときにUITableview内のヘッダーとしてUISearchbarを非表示にします

uisearchbar uisearchdisplaycontroller
キャンセルがタッチされたときにUITableview内のヘッダーとしてUISearchbarを非表示にします

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

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

私が試したこと:

  1. tableview contentOffsetを44に設定します。 最初は動作します。

  2. [tableview scrollToRowAtIndexPath:…​.]を呼び出します。
    何でもする。

  1  0


ベストアンサー

これを試して:

- (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];
}

2


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

@property(nonatomic、retain)UISearchBar * searchBar;

設定できます

tableView.tableheader = nil;

それを元に戻す

tableView.tableHeader = searchBar;

再び必要になるとき。

2


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

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


- (void) hideSearchBar
{
    self.table.contentOffset = CGPointMake( 0, self.searchBar.frame.size.height );
}

1


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

あなたの場合、UISearchBarDelegateプロトコルを採用していることを確認してから:

- (void)searchBarCancelButtonClicked:(UISearchBar *)searchBar
{
    [self.searchDisplayController setActive:NO animated:YES];
}

0


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

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

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

   //reload you table here
}

ありがとう

0


タイトルとURLをコピーしました