A T*_*hka 15 uinavigationbar uinavigationcontroller uilabel ios swift
我在UINavigationController中嵌入了UITableView和Detail View,如下所示:
我想为"我的笔记"打开大型标题,但我想将其关闭以获取详细视图.类似于默认的Mail应用程序在iPhone上的工作方式.如何prefersLargeTitle在segue期间更改导航栏的属性?
Voj*_*vik 11
.navigationBarTitle("Title", displayMode: .inline)
Run Code Online (Sandbox Code Playgroud)
小智 7
这很简单。
在您的DetailView中,您应该将navigationItem.largeTitleDisplayMode设置为.never
(不是navigationController?.navigationItem.largeTitleDisplayMode !!)
navigationItem.largeTitleDisplayMode = .never
Run Code Online (Sandbox Code Playgroud)
我刚才有同样的问题。
我的用例:
MasterVC:没有 largeTitle 的基本导航栏
DetailVC:启用大标题
--> 当从 DetailVC 返回 MasterVC 时,我看到一个奇怪的动画,它在返回基本的非 largeTitle 布局之前在 Master 上显示了 largeTitle 一秒钟。它看起来像是一个小故障。
我按照这种方法修复了它:
在 MasterVC 中- viewDidLoad
if #available(iOS 11.0, *) {
navigationItem.largeTitleDisplayMode = .never
navigationController?.navigationBar.prefersLargeTitles = false
}
Run Code Online (Sandbox Code Playgroud)
详细VC - viewDidLoad
if #available(iOS 11.0, *) {
navigationItem.largeTitleDisplayMode = .always
navigationController?.navigationBar.prefersLargeTitles = true
}
Run Code Online (Sandbox Code Playgroud)
我希望能帮助别人。
应当注意的是,如果设置largeTitleDisplayMode为never,以及prefersLargeTitles对细节错误ViewController,小题将继续从细节移动时显示第二ViewController到先前ViewController通过的UINavigationBar后退按钮。
willMove(toParent:)在执行转场之前使用函数将标题改回。
override func willMove(toParent parent: UIViewController?) {
navigationItem.largeTitleDisplayMode = .always
navigationController?.navigationBar.prefersLargeTitles = true
}
Run Code Online (Sandbox Code Playgroud)
if #available(iOS 11.0, *) {
self.navigationItem.largeTitleDisplayMode = UINavigationItem.LargeTitleDisplayMode.never
} else {
// Fallback on earlier versions
}
Run Code Online (Sandbox Code Playgroud)
以下两个中的任何一个,将解决你的问题:
为navigationBar 设置preferredsLargeTitles为false
self.navigationController?.navigationBar.prefersLargeTitles = false
Run Code Online (Sandbox Code Playgroud)将navigationItem的largeTitleDisplayMode设置为从不(请注意:preferredLargeTitles必须为false,否则将不起作用)
self.navigationController?.navigationItem.largeTitleDisplayMode = .never
Run Code Online (Sandbox Code Playgroud)注意:如果prefersLargeTitles为true,则largeTitleDisplayMode =。从不起作用。导航栏的小标题显示取决于prefersLargeTitles
如果值为true,将启用大标题模式
self.navigationController?.navigationBar.prefersLargeTitles = true
Run Code Online (Sandbox Code Playgroud)