我正在以编程方式创建一个类似的导航控制器:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.mainMenuViewController = [[MainMenuViewController alloc] init];
self.window.rootViewController = self.mainMenuViewController;
UINavigationController* navigationController = [[UINavigationController alloc] initWithRootViewController:self.window.rootViewController];
[self.window makeKeyAndVisible];
[[GKHelper sharedInstance] authenticateLocalPlayer];
return YES;
}
而且,虽然Xcode对此非常满意,但是当我使用此代码启动应用程序时,我会看到黑屏。当我评论它,并且只是在故事板中使用箭头它工作正常但我没有得到导航控制器。我做错了什么?
答案 0 :(得分:15)
在尝试发送消息之前,您需要创建UIWindow
对象。您还需要将导航控制器设置为窗口rootViewController
。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
self.mainMenuViewController = [[MainMenuViewController alloc] init];
UINavigationController* navigationController = [[UINavigationController alloc] initWithRootViewController:self.mainMenuViewController];
self.window.rootViewController = navigationController;
[self.window makeKeyAndVisible];
[[GKHelper sharedInstance] authenticateLocalPlayer];
return YES;
}
我看到你正试图从使用故事板过渡。您的MainMenuViewController
需要以某种方式创建或加载其视图。当您使用故事板时,MainMenuViewController
正在从故事板中加载其视图。您有三种选择:
您可以从故事板中加载MainMenuViewController
,以便从故事板加载其视图。在故事板中,为您的MainMenuViewController
提供标识符。假设您将标识符设置为MainMenu
。然后,您可以从故事板中加载MainMenuViewController
,如下所示:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
self.mainMenuViewController = [storyboard instantiateViewControllerWithIdentifier:@"MainMenu"];
您可以创建包含.xib
视图的MainMenuViewController
文件。如果您将其命名为MainMenuViewController.xib
,MainMenuViewController
将自动使用它(当您未从故事板加载视图控制器时)。
您可以实施-[MainMenuViewController loadView]
来创建视图并将其存储在self.view
中。
答案 1 :(得分:0)
它没有显示任何内容,因为没有什么可以显示:)。以编程方式执行此操作时,您必须: 1.实例化导航控制器 2.实例化要放入其中的视图控制器。 3.创建这些对象的数组 4.将阵列添加到导航控制器 5.设置navController以进行查看。
代码段:
UINavigationController *navContr = [[UINavigationController alloc]init];
FirstViewController *firstViewContr = [[FirstViewController alloc] init];
MapViewController *mapContr = [[MapViewController alloc] init];
NSArray *vcArray = [NSArray arrayWithObjects: mapContr, firstViewContr, nil];
[navContr setViewControllers:vcArray];
[self.window setRootViewController:navContr];
[self.window makeKeyAndVisible];
return YES;