每当我在横向添加viewController到navigationController时,标题视图会出现在某些视图上,但不会出现在其他视图上。即:我有一个导航控制器,添加3个视图控制器,前两个适当地显示标题视图,第三个没有显示一个。但导航控制器从ViewController中抓取了titleview,就像它应该的那样,我将它的值写入控制台并且它是正确的,但它不会出于任何原因在屏幕上显示。有什么想法吗?
哦,是的,在纵向方向上工作得很好。
这是另一个有趣的部分,如果我将故障视图控制器推入横向的navigationController中,titleView不存在,那么没有任何用户交互,我将设备旋转回肖像并出现titleView,然后我旋转设备回到风景,它停留!
即使我使用了InvokeOnMainThread,我的TitleView绘图也被阻止了。在那次通话中,主线程(或任何地方)没有任何东西在运行。
这是我的结构:
Window
TabBarController
NavigationController
ViewController
NavigationController
ViewController
这是我的操作顺序:
答案 0 :(得分:4)
按下控制器后,您是否尝试过设置控制器标题?这种行为发生在我身上,确保标题出现的方法是强制在viewDidLoad或viewWillAppear方法中设置navBar标题,如下所示:
self.navigationController.navigationBar.topItem.title = @"The title";
或
self.navigationItem.title = @"The Title";
发生在我身上的其他事情是在viewDidLoad方法中设置导航栏的leftBarButton或RightBarButton但没有成功,但是在viewWillAppear方法中设置条形按钮时它们会正确显示。
希望这会有所帮助。
答案 1 :(得分:0)
我认为您的问题可能是在调用函数时,导航项为零。所以当你调用self.navigationITem.title时,它什么都不做。稍后,当旋转视图时,navigationItem不再为nil,因此更改标题会起作用。
如果你在ViewDidLoad函数中执行代码,请注意第一次有人调用viewController.view时调用ViewDidLoad,而不是第一次显示视图。所以视图可能还没有在navigationController中。
例如,如果你这样做,就会发生这种情况:
viewController.view.backgroundColor = ... ;
[navigationController pushViewController:viewController]
即使控制器还不在navigationController中,第一行也会调用ViewDidLoad。