Ios 在第一视图控制器和自动布局中隐藏UINavigationBarController

Ios 在第一视图控制器和自动布局中隐藏UINavigationBarController,ios,autolayout,Ios,Autolayout,我有一个应用程序的设计,有3个屏幕 A) 初始屏幕不应显示顶部导航栏 B) 第二个屏幕应显示顶部导航栏(带有导航返回按钮至a) C) 第三个屏幕不应显示顶部导航栏(但正常按钮返回B) 我选择在导航栏中嵌入视图控制器。 但是这样做,第一个视图控制器上的自动布局约束会发出大量警告——因为嵌入的UIView固定在顶部栏上——这真的很烦人 当然,如果我在情节提要设计器中“隐藏”导航栏,我将无法再为by B屏幕添加所需的按钮 另一种选择是完全手动实现我的应用程序的导航属性,但我确实希望避免这样做 对此

我有一个应用程序的设计,有3个屏幕

  • A) 初始屏幕不应显示顶部导航栏
  • B) 第二个屏幕应显示顶部导航栏(带有导航返回按钮至a)
  • C) 第三个屏幕不应显示顶部导航栏(但正常按钮返回B)
我选择在导航栏中嵌入视图控制器。 但是这样做,第一个视图控制器上的自动布局约束会发出大量警告——因为嵌入的UIView固定在顶部栏上——这真的很烦人

当然,如果我在情节提要设计器中“隐藏”导航栏,我将无法再为by B屏幕添加所需的按钮

另一种选择是完全手动实现我的应用程序的导航属性,但我确实希望避免这样做

对此,首选(最佳实践)解决方案是什么?

太简单了。。。 您只需在视图中设置导航控制器的隐藏属性就会出现例如:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    self.navigationController.navigationBarHidden=YES/NO; //as per your requirement
}

如@SonuPatel answer中所述,您可以相对轻松地将导航栏设置为隐藏。布局:

在控制器A和C中,使顶部布局相对于视图偏移,而不是相对于顶部布局参考线偏移。这将使它们在导航栏不可见时位于导航栏下。隐藏项通常仍对布局有贡献,因此topLayout指南不受其隐藏的影响

在控制器B中,使顶部布局相对于顶部布局指南,使其位于导航栏下方


对于UITableViewController,您可以通过在属性检查器中选择顶部栏下的“延伸边”来免费获取此信息。

Ahh。。对不起,我的问题不太清楚。这仍然不能解决设计器中显示的自动布局问题。我选择暂时不使用导航控制器。太麻烦了。