1. ホーム
  2. ios

[解決済み] iPhone UITableViewの検索バーをデフォルトで非表示にする

2023-06-14 07:40:55

質問

Interface Builderでテーブルビューを作成し、そこにライブラリのSearch BarとSearch Display Controllerを追加して、検索機能を追加しています。しかし、ビューを最初に表示したときに、バーが画面の一番上に表示されるように設定しました。

検索バーをデフォルトで非表示にしながら、テーブル ビューでスクロールできるようにする方法を知りたいです (例として、Apple のメール アプリケーションを参照)。私は scrollRectToVisible:animated:viewDidLoad を使ってテーブルビューを下にスクロールさせることができますが、無駄です。検索バーをデフォルトで非表示にするには、どのような方法が望ましいのでしょうか?

どのように解決するのですか?

まず、UITableViewのtableHeaderViewにUISearchBarを追加して、テーブルのコンテンツと一緒にスクロールされるようにし、ビューの最上部に固定されないようにします。

検索バーはテーブルビューの行としてカウントされないので、テーブルビューの上部を最初の行までスクロールすると、検索バーが「隠れる」ようになります。

[yourTableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionTop animated:NO];

またはSwiftで

yourTableView.scrollToRowAtIndexPath(NSIndexPath(forRow: 0, inSection: 0), atScrollPosition: UITableViewScrollPosition.Top, animated: false)

テーブルビューがデータを含む前にスクロールしないように注意する ( scrollToRowAtIndexPath は、与えられた indexPath が有効な行を指していない場合 (すなわち、テーブルビューが空の場合) に例外を発生させます)。