4

私はnavigationBarのないUIViewController(1)を持っており、navigationBarのある外側のUIViewController(2)をプッシュする必要があり、[戻る]をクリックすると、navigationBarは1つのコントローラーで非表示にする必要があります。uiviewcontrollerデリゲートを試しました。しかし、何も機能していません。

助けてください..

4

4 に答える 4

10

これにより、2番目の画面にナビゲーションバーが表示されます。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];        
    self.navigationController.navigationBarHidden = NO;
}

また、最初の画面に戻ったときにナビゲーションバーを非表示にする必要があります。

- (void)viewDidDisappear:(BOOL)animated {
    [super viewDidDisappear:animated];        
    self.navigationController.navigationBarHidden = YES;
}
于 2012-08-06T16:36:20.633 に答える
2

アニメーションオプションが必要だと思います。上記のアプローチ(self.navigationController.navigationBarHidden = value)を使用してロールすると、望ましくない視覚的なパン粉が発生します。

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    [self.navigationController setNavigationBarHidden:NO animated:YES];
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

    [self.navigationController setNavigationBarHidden:YES animated:YES];
}

これにより、navBarが表示/非表示のビューにしっかりと接続された状態でスムーズにプッシュ/ポップします。

于 2015-02-26T16:50:27.960 に答える
1

このコードを最初のViewControllerに配置します

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];        
    self.navigationController.navigationBarHidden = YES;
}
于 2012-08-06T15:58:04.813 に答える
0

管理するビューコントローラのナビゲーションバーが非表示/状態を表示している場合、AlfieまたはAderからの回答は大惨事になります。

UINavigationBarの外観管理専用のコードをgithubに投稿しました。RRViewControllerExtensionをチェックしてください、それはあなたの問題を優雅に解決します。

RRViewControllerExtensionを使用すると、ヘッダーファイルを#importする必要はありません。必要なのは、ビューコントローラーで以下の目的のメソッドをオーバーライドすることだけです。

//override any of the methods below in your viewcontroller's .m file to make specific navigation bar appearance

-(BOOL)prefersNavigationBarHidden;
-(BOOL)prefersNavigationBarTransparent;

-(nullable UIColor *)preferredNavatationBarColor;
-(nullable UIColor *)preferredNavigationItemColor;
-(nullable UIImage *)preferredNavigationBarBackgroundImage;
-(nullable NSDictionary *)preferredNavigationTitleTextAttributes;
于 2018-09-27T01:35:52.757 に答える