2015-10-20 113 views
0

我在UINavigationBar上有UISegmentedControl。该UIViewController嵌入从故事情节进行UINavigationController屏幕截图中,见下图:iOS9:在导航栏中隐藏SegmentedControl后不会出现标题

enter image description here

如果该设备是一个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 
    } 
} 

Resul(从模拟器):

enter image description here

我也试过viewWillAppear,但无济于事。

如果我从Storyboard中拿出UISegmentedControlUINavigationBar标题显示正常。

如何隐藏导航栏中的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() 

回答

1

我觉得从UINavigationBar的的topitem改变而不是被一个UILabel到一个UISegmentedControl你可能会做包含[UINavigationBar的项目]中的数据的NSLog的看他们如何订购,导致它会呈现最上面的项目。

“导航控制器会自动创建导航栏和push和pop时,相应的导航项目”

https://developer.apple.com/library/prerelease/tvos/documentation/UIKit/Reference/UINavigationBar_Class/index.html#//apple_ref/occ/instp/UINavigationBar/items

+0

请看看我的编辑 – user1107173

+0

我想我们需要更多的信息来进行调试这件事,但如果“hidden = true”不起作用有时调用setter方法工作(不要问我为什么)[segmentedControlMain setHidden:YES]; 仔细检查segmentedControlMain和视图之间的连接,也可能会将segmentedControlMain的alpha设置更改为0.0以使其透明 – MrJomp

+0

分段控件已隐藏。但标题没有出现。 – user1107173