简单标题未显示在UINavigationController中

时间:2014-07-03 22:24:25

标签: ios uinavigationcontroller uinavigationitem uitabbaritem

我查看了所有相似/相关的问题,但没有a)是我的问题或2)解决方案都没有用。

在我的appDelegate.m中,我有didFinishLaunchingWithOptions

JCGRootNavigationController *rnc = [[JCGRootNavigationController alloc] init];
self.window.rootViewController = rnc;`

JCGRootNavigationController是UINavigationController的子类

@interface JCGRootNavigationController : UINavigationController`

在JCGRootNavigationController.m中:

@implementation JCGRootNavigationController

-(instancetype) init {
    self = [super init];
    self.view.backgroundColor = [UIColor lightGrayColor];
    self.navigationItem.title = @"MY TITLE";    
    return self;
}

标题刚刚显示。我看到导航栏,但没有标题。看起来这些年来很多人都有同样的问题。也许一个简单的答案将有助于澄清所有令人困惑的问题。这太令人难以置信了。

3 个答案:

答案 0 :(得分:20)

使用情节提要时,设置titleUIViewController的{​​{1}}似乎并未将该标题添加到导航控制器,正如其他答案所示。

而是在Storyboard层次结构中找到可能与View Controller对象一起的UITableViewController。设置此导航项UINavigationItem以将该标题应用于导航控制器。

Navigation Item on Storyboard[1]

答案 1 :(得分:9)

UINavigationController自动显示它正在显示的UIViewController子类的标题。它通过查看该UIViewController或UIViewController子类的navigationItem.title属性来实现。基本上UINavigationController没有标题。

答案 2 :(得分:0)

感谢believeInSanta,虽然我无法在任何地方找到苹果文档中明确说明的内容,但我不得不接受这个问题。 UINavigationController没有标题。

为了让标题起作用,回到appDelegate.h我添加了:

JCGTableViewController *tvc = [[JCGTableViewController alloc] init];
JCGRootNavigationController *rnc = [[JCGRootNavigationController alloc] initWithRootViewController:tvc];
self.window.rootViewController = rnc;

其中JCGTableViewController是我添加的另一个子类。您可以告诉它,它是UITableViewController的子类。

在JCGTableViewController中,我将init覆盖为:

-(instancetype) init {

    self = [super init];
    if(self) {
        self.title = @"TVC";
        self.view.backgroundColor = [UIColor lightGrayColor];
    }

    return self;
}

虽然我使用了tableViewController,但我想你可以将任何视图添加到NavigationController并以这种方式设置属性。我今天会玩弄它。

全部谢谢!