以编程方式在委托中调用故事板

7
我正在尝试以编程方式调用我的故事板。 我的故事板包含以下内容: [导航控制器] -> [主菜单视图] -> [详细信息视图] "MainMenu"标识符放置在[MainMenuView]中。 我遇到的问题是屏幕显示空白。我需要做什么? 谢谢。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{       
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    MainMenuView *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"MainMenu"];

    return YES
}
2个回答

16

您需要先手动创建窗口,然后将rootViewController添加到其中(上一个答案几乎正确):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    UIViewController *mainViewController = [storyboard instantiateInitialViewController];

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.rootViewController = mainViewController;
    [self.window makeKeyAndVisible];

    return YES;
}

这对于iOS 9来说不再是真的了。 - William Entriken

2

您需要设置应用程序窗口的rootViewController属性:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{       
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    MainMenuView *rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"MainMenu"];

    self.window.rootViewController = rootViewController;

    return YES;
}

我已经设置了它,但它仍然是空白的。 - RockBaby
@RockBaby:AppDelegate的window属性还没有设置好,你正在给nil发送消息。首先在didFinish...中执行以下操作:self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; - Josh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接