我在UINavigationController中嵌入了一个UITableView和一个Detail View,如下所示:我想打开“我的笔记”的大标题,但是我想将其关闭以进行详细视图。类似于默认的Mail应用程序在iPhone上的工作方式。如何在segue期间更改导航栏的prefersLargeTitle
属性?
答案 0 :(得分:4)
以下两者中的任何一个都将解决您的问题:
为您的navigationBar设置prefersLargeTitles为 false
self.navigationController?.navigationBar.prefersLargeTitles = false
为navigationItem设置largeTitleDisplayMode为 never (注意:prefersLargeTitles必须 false 否则这不会起作用)
self.navigationController?.navigationItem.largeTitleDisplayMode = .never
注意:如果prefersLargeTitles
为真,那么largeTitleDisplayMode =。则无法工作。导航栏的小标题显示取决于prefersLargeTitles
如果值为 true
,则会启用大型标题模式self.navigationController?.navigationBar.prefersLargeTitles = true
答案 1 :(得分:3)
我刚才有同样的问题。
我的用例:
MasterVC:没有大标题的基本导航栏
DetailVC:已启用largeTitle
->从DetailVC返回MasterVC时,我看到了一个奇怪的动画,该动画在Master上显示了largeTitle几秒钟,然后又回到了基本的nonlargeTitle布局。看起来像个小故障。
我通过以下方法对其进行了修复:
在MasterVC中- viewDidLoad
if #available(iOS 11.0, *) {
navigationItem.largeTitleDisplayMode = .never
navigationController?.navigationBar.prefersLargeTitles = false
}
详细信息VC - viewDidLoad
if #available(iOS 11.0, *) {
navigationItem.largeTitleDisplayMode = .always
navigationController?.navigationBar.prefersLargeTitles = true
}
我希望可以帮助别人。
答案 2 :(得分:3)
这很简单。
在您的 DetailView 中,应将 navigationItem.largeTitleDisplayMode 设置为。从不
(不是 navigationController?.navigationItem.largeTitleDisplayMode !!)
navigationItem.largeTitleDisplayMode = .never
答案 3 :(得分:1)
if #available(iOS 11.0, *) {
self.navigationItem.largeTitleDisplayMode = UINavigationItem.LargeTitleDisplayMode.never
} else {
// Fallback on earlier versions
}
答案 4 :(得分:1)
请注意,如果您在详细信息largeTitleDisplayMode
上将prefersLargeTitles
设置为从不,并将ViewController
设置为false,则小标题从屏幕上移开时将继续显示一秒钟。通过后退按钮ViewController
向上一个ViewController
详细UINavigationBar
。
在执行搜索之前,使用willMove(toParent:)
功能将标题改回来。
override func willMove(toParent parent: UIViewController?) {
navigationItem.largeTitleDisplayMode = .always
navigationController?.navigationBar.prefersLargeTitles = true
}
答案 5 :(得分:1)
.navigationBarTitle("Title", displayMode: .inline)
答案 6 :(得分:1)
我遇到了同样的问题,需要在第二个ViewController的故事板上放置NavigationItem。 segue自动创建了我的NavigationItem,并且prefersLargeTitle
中的viewDidLoad()
在视图出现之前尚未完成加载。在情节提要中添加NavigationItem可以解决此问题,并允许我在情节提要的属性菜单中设置prefersLargeTitle
。
答案 7 :(得分:1)
步骤 1. 使用 ZStack 第 2 步:.navigationBarTitle("", displayMode: .inline)
答案 8 :(得分:0)
可能已经很晚了,但这对某人可能有用。
在viewDidLoad下的详细信息视图控制器上包含以下代码
navigationItem.largeTitleDisplayMode = .never