UINavigationController TitleView未从ViewController NavigationItem中显示

时间:2011-07-25 17:27:02

标签: iphone cocoa-touch uinavigationcontroller xamarin.ios

每当我在横向添加viewController到navigationController时,标题视图会出现在某些视图上,但不会出现在其他视图上。即:我有一个导航控制器,添加3个视图控制器,前两个适当地显示标题视图,第三个没有显示一个。但导航控制器从ViewController中抓取了titleview,就像它应该的那样,我将它的值写入控制台并且它是正确的,但它不会出于任何原因在屏幕上显示。有什么想法吗?

哦,是的,在纵向方向上工作得很好。

这是另一个有趣的部分,如果我将故障视图控制器推入横向的navigationController中,titleView不存在,那么没有任何用户交互,我将设备旋转回肖像并出现titleView,然后我旋转设备回到风景,它停留!

即使我使用了InvokeOnMainThread,我的TitleView绘图也被阻止了。在那次通话中,主线程(或任何地方)没有任何东西在运行。

这是我的结构:

Window
  TabBarController 
    NavigationController 
      ViewController
    NavigationController
      ViewController

这是我的操作顺序:

  1. 创建视图控制器
  2. 添加标题视图以查看控制器
  3. 将View Controller推送到NavigationController(InvokeOnMainThread)

2 个答案:

答案 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。