2013-09-25 2 views
16

私はの部分にsectionIndexTitlesForTableView:の横にスクロール可能なセクションを持つアプリケーションを持っています。iOS 7の連絡先アプリのような検索バーを作成

UITableViewtableHeaderViewに、UISearchBarを追加します。これは、AppleがiOS7の新しい連絡先アプリで使用しているように動作したいものです。しかし、私はそれを動作させるように見えることはできません。

検索バーは画面の幅の100%ではなく、セクションインデックスに対して右側にあります。

私の質問は以下のとおりです。それは目に見える部分インデックスを有するUITableViewtableHeaderViewだとき

  • にはどうすれば100%に検索バーの幅を得るのですか?
  • ナビゲーションバーが表示されず、検索バーの灰色の背景がステータスバーに及ぶiOS 7の連絡先アプリのようなトランジションを作成するにはどうすればよいですか?

私は、ナビゲーションバーに検索バーを追加し、UISearchBarControllerの使用など、すでにいくつかのことを、試してみましたが、私はこれを作成する方法については、アップルのWebサイトで良いドキュメントを見つけることができません。また、iOS6からiOS7への移行ガイドは私にとっては役に立たなかった。 enter image description here enter image description here

答えて

0

2つのこと:

1)のtableViewのsectionIndexBackgroundColor [UIColor clearColor]に設定し

は、ここに私の問題を説明する二つの絵です。

2)UISearchBar

ためにあなたの問題を解決しますAppleは自分のアプリのやり方に
- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    CGRect barFrame = self.searchBar.frame; 
    barFrame.size.width = self.view.bounds.size.width; 
    self.searchBar.frame = barFrame; 
} 
5

二つの主な相違点をフレームを修正するために「viewDidLayoutSubviews」メソッドを実装します。

まず、UISearchBarはtableViewのheaderViewではありません。それはテーブルの上の別のビューです。 UITableViewControllerをUISearchBarのすぐ下に配置されたUIViewControllerに変更する必要があります。

第2に、UISearchBarには関連する検索表示コントローラがあります。あなたがストーリーボードファイルを使用していると仮定すると、これは一緒にバンドルされています。検索ディスプレイコントローラでUISearchBarを追加するだけです。これは、あなたのステータスバーの下に移行するすべてを処理します。

+0

あなたのソリューションは確かにキーポイントをハイライトします。私はあなたの方法に従って、tableViewの上に検索バーを配置することができました。私が今抱えている唯一の問題は、検索テキストフィールドがフォーカスされているときに、検索バーがステータスバーを覆うこともあります。私はそれをどうやって解決できるのか分かりません。 – xialin

+0

最適なソリューション。私はUITableViewControllerで同じことをする方法を考えていましたが、真実: "scrollViewDidScroll"をオーバーライドするよりも、UITableViewControllerを構築して定型コードをコピーする方が簡単です –

関連する問題