如何指定在一个屏幕上显示导航栏而不在另一个屏幕上显示?
How to specify to show a navigation bar on one screen and not to show it on another?
我有两个视图控制器,vcA
和 vcB
。
vcA
是初始视图控制器,它嵌入在导航控制器中,navVC
。为了显示 vcB
,我用 navVC
推 vcB
。
但是,对于 vcA
我不想显示导航栏,对于 vcB
我确实想显示导航栏。
我看过这个 但它没有解决我的问题,因为我需要支持向后滑动。当我试图使导航控制器在向后滑动时消失时,导航控制器会立即消失或缓慢消失,具体取决于是否启用了动画。
我的 navVC
也显示了页面 sheet 动画,所以如果我将导航栏设置为在 viewWillDisappear
中消失,它会在我模态向下平移时消失。
有没有办法指定在第一个 vc 上不显示导航栏,而在第二个上显示导航栏?或者有什么我不熟悉的更好的方法吗?
虽然默认视图控制器最初让生活变得非常美好,但它们通常具有非常具体的操作方式,并且尝试在这些范例之外操作将很困难,如果不是不可能的话。
我建议不要在您不希望栏出现的视图上使用默认导航视图控制器,而是自定义您自己的视图以支持您尝试复制的确切行为。
例如,您可以为 viewA 使用顶部没有栏的常规视图,然后转到导航视图控制器并将视图 B 设为默认视图。
为什么要隐藏 vcA 上的导航栏?
相反,您可以将 barTintColor 设置为与 vcA 背景颜色相同,您不必隐藏导航栏。
if #available(iOS 15.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = color
vcA.navigationController?.navigationBar.standardAppearance = appearance
vcA.navigationController?.navigationBar.scrollEdgeAppearance = vcA.navigationController?.navigationBar.standardAppearance
} else {
vcA.navigationController?.navigationBar.barTintColor = color
}
我有两个视图控制器,vcA
和 vcB
。
vcA
是初始视图控制器,它嵌入在导航控制器中,navVC
。为了显示 vcB
,我用 navVC
推 vcB
。
但是,对于 vcA
我不想显示导航栏,对于 vcB
我确实想显示导航栏。
我看过这个 navVC
也显示了页面 sheet 动画,所以如果我将导航栏设置为在 viewWillDisappear
中消失,它会在我模态向下平移时消失。
有没有办法指定在第一个 vc 上不显示导航栏,而在第二个上显示导航栏?或者有什么我不熟悉的更好的方法吗?
虽然默认视图控制器最初让生活变得非常美好,但它们通常具有非常具体的操作方式,并且尝试在这些范例之外操作将很困难,如果不是不可能的话。
我建议不要在您不希望栏出现的视图上使用默认导航视图控制器,而是自定义您自己的视图以支持您尝试复制的确切行为。
例如,您可以为 viewA 使用顶部没有栏的常规视图,然后转到导航视图控制器并将视图 B 设为默认视图。
为什么要隐藏 vcA 上的导航栏?
相反,您可以将 barTintColor 设置为与 vcA 背景颜色相同,您不必隐藏导航栏。
if #available(iOS 15.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = color
vcA.navigationController?.navigationBar.standardAppearance = appearance
vcA.navigationController?.navigationBar.scrollEdgeAppearance = vcA.navigationController?.navigationBar.standardAppearance
} else {
vcA.navigationController?.navigationBar.barTintColor = color
}