8

セクション インデックスがテキスト フィールドと重ならないように、テーブル ヘッダー内にあるときに UISearchBar の幅を変更するにはどうすればよいですか? 電話アプリの連絡先ビューにあるのと同じレイアウトを再作成したいと考えています。

4

3 に答える 3

5

考えられる解決策の 1 つは、カスタム ビューを tableHeaderView に追加することです。これは私がしたことです:

searchBar は、ヘッダー ファイルで宣言した UISearchBar です。UIView を作成し、幅全体に UINavigationBar を追加し、その上に短い UISearchBar を追加しました。最後に、UIView を tableHeaderView に割り当てました。

searchBar = [[UISearchBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 290.0, 44.0)];

UIView *customTableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
UINavigationBar *dummyNavigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 44.0)];
[customTableHeaderView addSubview:dummyNavigationBar];
[customTableHeaderView addSubview:searchBar];
[dummyNavigationBar release];

self.tableView.tableHeaderView = customTableHeaderView;
[customTableHeaderView release];

より洗練されたソリューションは、contentStretch プロパティを使用して UISearchBar を拡大することです。私はまだそれを試して、それが機能するかどうかを確認する必要があります.

于 2010-04-07T10:27:18.653 に答える
1

このスクリーンショットに見られるように、検索バーの右端に「A」と「B」が表示されているように、画面の右側にあるインデックス文字の A ~ Z が検索バーにオーバーランしているということですか?

ここに画像の説明を入力

(a) このアルファベットオーバーランの問題を回避する方法が見つかりません。Scott McCammon の回答 here でリンクされているアプローチは、Apple によって禁止されています (それでも、この問題を解決できるかどうかはわかりません)。

(b) iPod touch (第 4 世代) の iOS 6.0.1の Apple の連絡先アプリでこの動作が見られます。

(c) 検索バーはテーブル ビューのヘッダーにあるため、論理的にはバグではなく機能だと思います。ヘッダーはテーブル ビューの一部であり、テーブル ビューの一部のようにスクロールするため、テーブル ビューの残りの部分と同じようにインデックス アルファベットを描画することはおそらく理にかなっています。

スコープ ボタンがある場合、この問題はさらに問題になります。右側にはスコープ ボタン用のスペースが確保されていないため、インデックス アルファベットは一番右のボタンのすぐ上に描画されます。

于 2013-02-01T07:39:32.723 に答える
0

UISearchDisplayController を使用すると、この回答に記載されているように、目的の動作が自動的に機能します。

于 2010-07-01T02:55:08.957 に答える