Как скрыть панель навигации от одного конкретного контроллера представления - PullRequest
65 голосов
/ 11 февраля 2012

Я создал приложение для iPhone с двумя заставками. После этого пользователь попадает в первый вид. Я добавил UINavigationController. Работает отлично.

Как убрать панель навигации только для открытого вида?

MainWindow

- (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;
 }

Ответы [ 6 ]

144 голосов
/ 11 февраля 2012

Итак, если вы находитесь в каком-либо контроллере представления, используйте этот метод:

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

Дополнительные уточнения:

UINavigationController имеет свойство navigationBarHidden, которое позволяет скрывать / отображать панель навигации для всего контроллера nav.

Давайте разберемся со следующей иерархией:

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

Каждый из трех UIViewController будет иметь панель навигации, поскольку они находятся в UINavigationController. Например, вы хотите скрыть панель во второй (на самом деле не имеет значения, в какой именно), а затем записать в UIViewController2:

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

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    [self.navigationController setNavigationBarHidden:NO animated:YES]; // it shows
}
16 голосов
/ 09 августа 2017

Swift 4:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    navigationController?.setNavigationBarHidden(true, animated: true)
}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(true)
    navigationController?.setNavigationBarHidden(false, animated: false)
}
3 голосов
/ 20 сентября 2018

Это работает для меня:

Swift 4

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    navigationController?.setNavigationBarHidden(true, animated: false)
}

//reappears navigation bar on next page
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    navigationController?.setNavigationBarHidden(false, animated: true)
}
0 голосов
/ 31 мая 2019

В c # или Xamarin.IOS, this.NavigationController.NavigationBar.Hidden = true;

0 голосов
/ 14 сентября 2017

Используйте код под одной строкой, чтобы скрыть панель навигации в Swift3 и Swift4

navigationController?.setNavigationBarHidden(true, animated: true)

Для отображения панели навигации

navigationController?.setNavigationBarHidden(false, animated: true)
0 голосов
/ 11 февраля 2012

Представить начальный вид модально, или;

  1. не добавляйте его в свой контроллер навигации
  2. представить его перед контроллером навигации.
  3. Как только все загрузится, отклоните начальный вид и покажите контроллер навигации (оба без анимации).

Взяв пример из этой темы: Как я могу дольше отображать заставку на iPhone?

-(void)applicationDidFinishLaunching:(UIApplication *)application {
    [window addSubview:splashView];
    [NSThread detachNewThreadSelector:@selector(getInitialData:) 
                                 toTarget:self withObject:nil];
}

-(void)getInitialData:(id)obj {
    [NSThread sleepForTimeInterval:3.0]; // simulate waiting for server response
    [splashView removeFromSuperview];
    [window addSubview:tabBarController.view];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...