导航控制器导航栏仅以普通代码覆盖屏幕的左上半部分
navigation controller navigation bar only covers top left half of screen in plain vanilla code
我几个月没接触它,只是在做一些 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;
}
我没有 post 图片的信誉点,但它是:http://i.stack.imgur.com/tbcqi.png
如您所见,标题未显示在导航栏中。另外,很奇怪的是,导航栏只在左上角而不是在整个视图中。我在这里错过了什么?此外,如果我将注释掉的行设置为 运行,以隐藏栏,那确实有效。不过酒吧我当然要,我不想要。
这是我刚开始的一个全新项目,我在两个新项目中尝试过。在这个奇怪的左角栏的两种情况下,我都有相同的结果。知道我做错了什么吗?谢谢
我不确定你创建 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;
您需要添加一个UIViewController
作为您UINavigationController
的根。目前您没有管理视图控制器。
导航栏标题反映了每个 UIViewControllers UINavigationItem 的内容。默认情况下,导航栏上的标题是导航堆栈中最顶部的 UIViewController 的标题。
后退按钮奇怪地反映了从顶部数第二个 UIViewController 的 UINavigationItem 的标题。因此,要设置后退按钮标签,您实际上将其设置在推动顶部控制器的控制器的 navigationItem 中。
您可以通过访问顶视图控制器 navigationItem 或从顶视图控制器内部使用以下命令来更改标题:
<a view controller>.navigationItem.title = @"My New Title";
或者如果来自控制器内部:
self.navigationItem.title = @"My New Title";
我几个月没接触它,只是在做一些 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;
}
我没有 post 图片的信誉点,但它是:http://i.stack.imgur.com/tbcqi.png
如您所见,标题未显示在导航栏中。另外,很奇怪的是,导航栏只在左上角而不是在整个视图中。我在这里错过了什么?此外,如果我将注释掉的行设置为 运行,以隐藏栏,那确实有效。不过酒吧我当然要,我不想要。
这是我刚开始的一个全新项目,我在两个新项目中尝试过。在这个奇怪的左角栏的两种情况下,我都有相同的结果。知道我做错了什么吗?谢谢
我不确定你创建 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;
您需要添加一个UIViewController
作为您UINavigationController
的根。目前您没有管理视图控制器。
导航栏标题反映了每个 UIViewControllers UINavigationItem 的内容。默认情况下,导航栏上的标题是导航堆栈中最顶部的 UIViewController 的标题。
后退按钮奇怪地反映了从顶部数第二个 UIViewController 的 UINavigationItem 的标题。因此,要设置后退按钮标签,您实际上将其设置在推动顶部控制器的控制器的 navigationItem 中。
您可以通过访问顶视图控制器 navigationItem 或从顶视图控制器内部使用以下命令来更改标题:
<a view controller>.navigationItem.title = @"My New Title";
或者如果来自控制器内部:
self.navigationItem.title = @"My New Title";