2011-02-03 12 views
3

UINavigationControllerにルート要素として含まれるUISearchDisplayController(およびUISearchBar)のUITableViewControllerがあります。 UINavigationBarの代わりにUISearchBarが表示されるように設定することはできますか?私はナビゲーションバーが隠れているとは思わない、次の画面(プッシュオン)で表示する必要があります(これは奇妙なアニメーショングリッチを作成します)。UINavigationControllerの代わりにUISearchBar UINavigationBar

私は基本的にApp Storeの検索タブのような画面になります。

私はそれが今どのように見えるかのサンプルのスクリーンショットをアップロードしました:

Default Configuration Selected Configuration

答えて

4

を推進しているコントローラのviewDidLoadメソッドで

[navigationController setNavigationBarHidden:YES animated:NO]; 
1

私はあなたが本当の「navigationBarHidden」プロパティを設定することで、あなたのnavigationbarを隠すことができますね。あなたはUINavigationControllerのデリゲートとして自分を割り当て、- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animatedを実装

[[self navigationController] setNavigationBarHidden:NO animated:YES]; 
+0

次に、次のビューコントローラを押すときに問題が発生します(ナビゲーションバーが表示されません)。再度有効にしようとすると、一時的に空のナビゲーションバーが表示されます。 –

1

次に、渡されたnavigationControllerを使用してナビゲーションバーを非表示にします。 [navigationController setNavigationBarHidden:YES animated:animated]

編集:同様-setNavigationBarHidden:animated:にアニメーション値を渡す方が良いだろう、そういえば。コードが更新されました。

+0

同じ問題があるようです。 –

6

私の解決策は次のとおりです。
UINavigationBarを非表示にする必要はなく、代わりにUISearchBarをUINavigationBarにマージできます。 YourClass.mファイルで


1.
2. UISearchBarプロパティを追加するには、のviewDidLoadセクションでNavigationItemにUISearchBarを追加します。 コード:

@interface YourClass() 
@property (weak, nonatomic) IBOutlet UISearchBar *searchBar; 
@end 

@implementation YourClass 
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Reveal cancel button in UISearchBar. 
    searchBar.showsCancelButton = YES; 

    // Add UISearchBar as titleView of the UINavigationBar. 
    self.navigationItem.titleView = searchBar; 
} 

最後に、.xibファイルを編集することを忘れないでください。 UISearchBarオブジェクトをUINavigationBarのすぐ下に追加し、UISearchBarの参照元コンセントをFile's Ownerに接続するだけです。 幸運を祈る!

関連する問題