我UISegmentedControl
上有一个UINavigationBar
。 UIViewController
嵌入在故事板的UINavigationController
屏幕截图中,见下文:
如果该设备是iPad
,我想隐藏UISegmentedControl
并改为显示self.title
。
在我的viewDidLoad
中,我有以下代码:
override func viewDidLoad() {
if UIDevice.currentDevice().userInterfaceIdiom == .Pad {
segmentedControlNavBar.hidden = true
self.title = "Navigation Title"
} else {
segmentedControlNavBar.hidden = false
navigationItem.prompt = "Navigation Title"
self.title = nil
}
}
结果(来自模拟器):
我也试过viewWillAppear
,但没有用。
如果我从UISegmentedControl
中取出Storyboard
,UINavigationBar
标题就可以了。
如何隐藏导航栏中的UISegmentedControl
并显示标题?
修改
override func viewDidLoad() {
super.viewDidLoad()
segmentedControlMain.hidden = true
navigationItem.prompt = nil
title = "Navigation Title"
let items = self.navigationController?.navigationBar.items
print(items?.first?.title)
}
日志:可选(“导航标题”)
我猜它就在那里,我如何让UINavigationBar显示它?
这些不起作用:
self.navigationController?.view.setNeedsDisplay()
self.navigationController?.navigationBar.setNeedsDisplay()
答案 0 :(得分:1)
我认为来自UINavigationBar的topitem被更改而不是UILabel到UISegmentedControl你可能会对[UINavigationBar项目]中包含的数据进行NSLog,看看它们是如何排序的,因为它将呈现最顶层的项目。
"导航控制器自动创建导航栏,并在适当时推送和弹出导航项目"
答案 1 :(得分:0)
一个旧线程,但以下对我有用:
设置navigationItem的titleView为nil:self.navigationItem.titleView = nil
然后将标题设置为想要的标题:self.title = "Desired Title"