无法设置UINavigationBar的标题

Tyi*_*ilo 0 cocoa-touch objective-c uinavigationbar ios

我想UINavigationBar在我的根视图中添加一个并在导航栏上设置标题.我尝试过使用其他类似问题的很多答案,但都没有奏效.

我正在以编程方式创建整个视图层次结构(因为我正在使用theos).在UINavagationBar启动应用程序时是可见的,但它没有标题,即使我都设置根视图控制器的标题和导航栏的标题顶部的项目.

我的应用程序只有一个主视图,因此导航栏仅出于美观原因.

该应用程序的完整源代码位于该行下方.


main.m文件:

int main(int argc, char **argv) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, @"CapabilitiesEditorApplication", @"CapabilitiesEditorApplication");
    }
}
Run Code Online (Sandbox Code Playgroud)

CapabilitiesEditorApplication.m:

#import "RootViewController.h"

@interface CapabilitiesEditorApplication: UIApplication <UIApplicationDelegate> {
    UIWindow *_window;
    RootViewController *_viewController;
}
@property (nonatomic, retain) UIWindow *window;
@end

@implementation CapabilitiesEditorApplication
@synthesize window = _window;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
    _window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    _viewController = [[RootViewController alloc] init];
    [_window addSubview:_viewController.view];
    [_window makeKeyAndVisible];
}

@end
Run Code Online (Sandbox Code Playgroud)

RootViewController.h:

@interface RootViewController: UIViewController

@property UINavigationBar *navigationBar;

@end
Run Code Online (Sandbox Code Playgroud)

RootViewController.m:

#import "RootViewController.h"

@implementation RootViewController
- (void)loadView {
    CGRect appFrame = [[UIScreen mainScreen] applicationFrame];

    self.view = [[UIView alloc] initWithFrame:appFrame];
    self.view.backgroundColor = [UIColor redColor];

    self.title = @"Title1";
    self.navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, appFrame.size.width, 44)];
    self.navigationBar.topItem.title = @"Title2";

    [self.view addSubview:self.navigationBar];
}
@end
Run Code Online (Sandbox Code Playgroud)

Wai*_*ain 6

问题在于:

self.navigationBar.topItem.title = @"Title2";
Run Code Online (Sandbox Code Playgroud)

因为topItemnil直到你添加一个UINavigationItem设置items在导航栏上.的UINavigationItem是,其中title应设置,然后导航栏将显示它.

UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Title2"];

self.navigationBar.items = @[ item ];
Run Code Online (Sandbox Code Playgroud)