Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 导航栏隐藏,不工作_Objective C_Uinavigationcontroller - Fatal编程技术网

Objective c 导航栏隐藏,不工作

Objective c 导航栏隐藏,不工作,objective-c,uinavigationcontroller,Objective C,Uinavigationcontroller,嗨,我是iOS开发的新手。我有一个主屏幕与导航栏隐藏真实。从那里,我使用back segue导航到另一个视图。但当我点击后退时,它会在主屏幕上显示导航栏。这是我的问题描述 在主屏幕onviewload中,我正在执行以下操作: self.navigationController.navigationBarHidden = YES; 一旦用户在新控制器中使用back segue转到另一个视图,我将执行以下操作 self.navigationController.navigationBarHidde

嗨,我是iOS开发的新手。我有一个主屏幕与导航栏隐藏真实。从那里,我使用back segue导航到另一个视图。但当我点击后退时,它会在主屏幕上显示导航栏。这是我的问题描述

在主屏幕onviewload中,我正在执行以下操作:

self.navigationController.navigationBarHidden = YES;
一旦用户在新控制器中使用back segue转到另一个视图,我将执行以下操作

self.navigationController.navigationBarHidden = NO;
现在,若我点击后退,它会在主窗口上显示我不想要的导航栏。基本上我希望主屏幕没有导航栏,下一个窗口有导航栏


如何做到这一点。我需要帮助。多谢各位

将代码放入视图将显示,而不是viewDidLoad,它应该可以正常工作。

我有一个
选项卡viewcontroller
由4个选项卡组成,其中一个选项卡不需要导航栏,但其他选项卡需要导航栏

-(void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  self.navigationController.navigationBarHidden = YES;
}
前面的答案都不能解决我的问题,这些代码可以

//隐藏App导航条,使用RN自己的导航条
- (void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    self.navigationController.navigationBar.hidden = YES;
//    self.navigationController.navigationBarHidden = YES;    //这句是  **完全没** 个卵用
//    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    [self.navigationController setNavigationBarHidden:YES animated:NO];
}

//恢复App导航条
- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.navigationController.navigationBar.hidden = NO;
//    self.navigationController.navigationBarHidden = NO;     //这句是  **完全没** 个卵用
    [self.navigationController setNavigationBarHidden:NO animated:NO];
}
不要使用

self.navigationController.navigationBarHidden = YES;
你应该使用

self.navigationController.navigationBar.hidden = NO;

对于Swift 4,将在视图中添加以下内容

        self.navigationController?.setNavigationBarHidden(false, animated: false)

self.navigationController?.setNavigationBarHidden(假,动画:假)


将上面的代码行放入viewwillbeen而不是viewDidLoad。

原因-在
viewDidLoad
中,
navigationController
尚未分配。@Sulthan,不是true。如果在viewDidLoad中记录self.navigationController,您将看到它已经存在。只是导航栏的隐藏状态是在导航控制器级别设置的,所以如果您在一个控制器中将其设置为“无”,它将一直保持这种状态,直到您在所有其他控制器中更改它为止。将代码放在每个控制器的ViewWillAspect方法中可确保在该控制器出现时将其重置。Hello rdelmar代码在viewDidLoad或ViewWillAspect中均不起作用。。。任何想法。。。。self.navigationController.navigationBarHidden=是;