1. ホーム
  2. ios

特定のビューコントローラーからナビゲーションバーを非表示にする方法

2023-10-03 16:26:48

質問

iPhoneアプリでスプラッシュスクリーンを2つ作成しました。その後、ユーザーは最初のビューに移動します。私はUINavigationControllerを追加しました。これは完全に正常に動作します。

オープニングビューだけのナビゲーションバーを削除するにはどうすればよいですか?

メインウィンドウ

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    


self.splashScreen = [[SplashScreen alloc] 
                initWithNibName:@"SplashScreen" 
                bundle:nil];
if (self.pageController == nil) {
openingpage *page=[[openingpage alloc]initWithNibName:@"openingpage" bundle:[NSBundle mainBundle]];
    self.pageController = page;
    [page release];
}
[self.navigationController pushViewController:self.pageController animated:YES];

[window addSubview:splashScreen.view];

 [splashScreen displayScreen];
[self.window makeKeyAndVisible];

return YES;
 }

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

このメソッドをビューコントローラ内で試してみてください。

// swift
self.navigationController?.setNavigationBarHidden(true, animated: true)

// objective-c
[self.navigationController setNavigationBarHidden:YES animated:YES]; 


より明確化しました。

UINavigationController には navigationBarHidden というプロパティがあり、ナビコントローラ全体のナビゲーションバーの表示/非表示を設定することができます。

次の階層を見てみましょう。

--UINavigationController
------UIViewController1
------UIViewController2
------UIViewController3

3つのUIViewControllerは、UINavigationControllerの中にあるので、それぞれ同じナビバーが表示されます。例えば、UIViewController2のバーを非表示にしたい場合(実際はどれでもいい)、UIViewController2に記述します。

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:YES];   //it hides the bar
}

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES]; // it shows the bar back
}