导航标题未显示在带有选项卡视图控制器的视图上,但“后退”导航有效

时间:2014-02-06 22:35:46

标签: ios xcode uinavigationcontroller uinavigationitem uitabview

我对iOS Objective-C开发相对较新,我遇到了一个无法找到解决方案的问题。

我有一个Table View Controller,上面有两个原型细胞,可以很好地填充。此Table View Controller是三个Tab Views中的一个,发送到View的{​​{1}}有一个Tab Views。这意味着Navigation Controller中的视图也有Tab Views条。酒吧工作正常,按照预期的“后退”按钮,酒吧就位。但是,(至少在列表视图中)Navigation未被完全识别 - 它的标题不会出现,表格单元格直接从状态栏下方开始,而不是在导航栏下方。

以下是一些显示问题的屏幕截图: what appears in Xcode (what I expect to happen) 什么出现在Xcode中(我期望发生什么) what actually appears on my testing device (iPhone 4, iOS 7.0.4) 然后在设备上,这是实际出现的 - 后退按钮就位,工作正常,但没有标题字段,表格单元格开始太高。

我已尝试添加Navigation BarNavigation Bar,而添加Navigation Items允许我在Xcode中添加标题,但它仍未显示在设备上在测试中。我还尝试在此视图之前添加另一个Navigation Item,但这也没有解决问题,并且导致了heirachy中的导航问题。

希望我已经足够清楚,请说如果我需要发布更多信息 - 我对Xcode比较新,所以不确定究竟什么是适用的,什么不适用。谢谢!

4 个答案:

答案 0 :(得分:23)

请尝试使用此代码,它可能会修复您的表格位置

// Since in iOS7 the nav bar is translucent by default, so the table view starts at (0,0)
// you can either disable the translucent, which i don't recommend unless you really want to
// or just add 64 pixel on the top of your table view
[self.YOURTABLEVIEW setContentInset:UIEdgeInsetsMake(64, 0, 0, 0)];

并为标题,请尝试此

self.tabBarController.navigationItem.title =@"YOUT TITLE NAME";

希望有所帮助..

答案 1 :(得分:2)

假设您的层次结构为

NavigationController -> ViewController  -> TabBarController -> ViewController1
                                                            -> ViewController2
                                                            -> ViewController3

如果要在viewcontroller1中隐藏导航项,请添加以下行

 self.navigationController.navigationBarHidden = YES;

如果要在viewcontroller2中显示标题,请在

中添加以下行
self.navigationController.navigationBarHidden = NO; //add this if you hide navItem viewcontroller1
[self.parentViewController.navigationItem setTitle:@"Title"];

如果要在viewcontroller3中隐藏后退按钮并显示标题,请添加以下行

 self.navigationController.navigationBarHidden = NO;
[self.parentViewController.navigationItem setTitle:@"Contacts"];

self.parentViewController.navigationItem.hidesBackButton=YES; 

如果在切换标签时遇到问题,请将此行添加到viewdidAppear方法而不是ViewdidLoad。

答案 2 :(得分:0)

我遇到了同样的问题,但我创建此问题的方法是我的按钮操作是连接到实际的表本身而不是表控制器。我删除了模态操作并为表控制器创建了一个新操作,它修复了问题。

答案 3 :(得分:0)

尝试从故事板或笔尖中单击导航栏。

enter image description here

然后将您的标题添加到酒店。

enter image description here