在Xcode 5中以编程方式修改UI Navigation控制器

时间:2014-01-16 12:37:17

标签: objective-c cocoa-touch ios7 xcode5

我有一个以编程方式生成的UINavigationController应用于我的每个ViewControllers,但此UINavigationController为空。我需要添加一些文本,图像(如果可能)和两个按钮。

我已经成功地使用一个非常基本的应用程序做了类似的事情,该应用程序只有一个以正常方式创建的ViewController和UINavigationController,但不知道如何以编程方式生成一个。

我正在使用XCode5/iOS7中的故事板。

以下是生成UINavigationController并启动第一个ViewController的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
    MainViewController* mainVC = [mainStoryboard instantiateInitialViewController];
    UINavigationController *navVC = [[UINavigationController alloc] initWithRootViewController:mainVC];

    [self.window setRootViewController:navVC];

    [_window makeKeyAndVisible];

    return YES;
}

我尝试了一些我认为很明显的事情:

navVC.navigationBar.backgroundColor = [UIColor redColor];

更改颜色或:

[navVC setTitle:@"Test title"];

但没有任何改变,我唯一可以改变标题的方法就是更改mainVC的标题

[mainVC setTitle:@"Test title"];

更改MainViewController.m文件中的标题本身不起作用。

那么如何修改UINavigationController(navVC)?

谢谢,

1 个答案:

答案 0 :(得分:2)

您应该能够以这种方式将图像设置到导航栏:

UINavigationBar *navBar = navVC.navigationBar;
UIImage *image = [UIImage imageNamed:@"YourNavBarImg.png"];
[navBar setBackgroundImage:image];

这将改变导航栏的色调颜色:

[navVC.navigationBar setTranslucent:NO];
[navVC.navigationBar setBarTintColor:[UIColor redColor]];

将按钮(UIBarButtonItem)导入导航栏:

// where "self" is your current viewcontroller
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:button1,button2, nil];