我只是在几个月没碰到它之后做了一些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
如您所见,标题未显示在导航栏中。另外,很奇怪,导航栏只在左上角,而不是在整个视图中。我在这里错过了什么?此外,如果我将注释掉的行设置为运行,则隐藏栏,这确实有效。但当然我想要吧,我不想要它。
这是一个刚刚开始新的全新项目,我在两个新项目中尝试过。在这个奇怪的左角栏的两个案例中我都有相同的结果。我有什么想法我做错了吗?感谢。
答案 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";