导航控制器导航栏仅以普通香草代码覆盖屏幕的左上半部分

时间:2015-03-27 21:20:16

标签: ios uinavigationbar

我只是在几个月没碰到它之后做了一些ios编程,今年我是新手。我刚开始一个新项目,我所做的只是以编程方式设置导航控制器作为根视图控制器。

以下是代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.

        self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        // Override point for customization after application launch.
        self.window.backgroundColor = [UIColor whiteColor];
        [self.window makeKeyAndVisible];


    UINavigationController *nvc = [[UINavigationController alloc] init];
    nvc.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    nvc.view.backgroundColor = [UIColor yellowColor];
    nvc.title = @"Woah";
//    nvc.navigationBarHidden = TRUE; this works ok

    self.window.rootViewController = nvc;

    return YES;
}

我没有发布图片的声望点,但这里是:http://i.stack.imgur.com/tbcqi.png

如您所见,标题未显示在导航栏中。另外,很奇怪,导航栏只在左上角,而不是在整个视图中。我在这里错过了什么?此外,如果我将注释掉的行设置为运行,则隐藏栏,这确实有效。但当然我想要吧,我不想要它。

这是一个刚刚开始新的全新项目,我在两个新项目中尝试过。在这个奇怪的左角栏的两个案例中我都有相同的结果。我有什么想法我做错了吗?感谢。

2 个答案:

答案 0 :(得分:0)

我不确定你打算创建UIWindow是什么意思,因为它是很久以前的代码。

现在,当您将xCode升级到最新版本时,无需手动创建UIWindow。

此外,当您创建UINavigationController时,在设置UINavigationController的rootView控制器时要好得多。

我很确定UIViewController需要嵌套在UINavigationController中。

因此,您的代码需要像下面一样进行更改;

HomeViewController *homeVC = [[HomeViewController alloc] initWithNibName:@"HomeViewController"]; //Let's assume this is the first VC on the navigation stack
UINavigationController *nvc = [[UINavigationController alloc] initWithRootViewController:homeVC];
//    nvc.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
//    nvc.view.backgroundColor = [UIColor yellowColor]; use nvc.navigationBar.tintColor = [UIColor yellowColor];
//    nvc.title = @"Woah"; use homeVC.title = @"Woah";
//    nvc.navigationBarHidden = TRUE; this works ok

self.window.rootViewController = nvc;

答案 1 :(得分:0)

您需要添加UIViewController作为UINavigationController的根。目前您没有管理视图控制器。

导航栏标题反映了每个UIViewControllers UINavigationItem的内容。默认情况下,导航栏上的标题是UIViewController的标题,它是导航堆栈中最顶层的。

后退按钮从顶部奇怪地反映了UIViewController的UINavigationItem的标题。因此,要设置后退按钮标签,您实际上将其设置在控制器的navigationItem中,该​​控制器将顶部控制器打开。

您可以通过访问顶视图控制器navigationItem或使用以下命令从顶视图控制器内部更改标题:

<a view controller>.navigationItem.title = @"My New Title";

或来自控制器内部:

self.navigationItem.title = @"My New Title";
相关问题