UIStoryboard从应用程序委托加载

我正在尝试从应用程序代理.m中以这种方式加载UIStoryboard:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; UIViewController *vc =[storybord instantiateInitialViewController]; [self.window addSubview:vc.view]; return YES; } 

这个代码有什么问题? 任何想法?

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; UIViewController *vc =[storyboard instantiateInitialViewController]; // Set root view controller and make windows visible self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.rootViewController = vc; [self.window makeKeyAndVisible]; return YES; } 

尝试这个。 我认为是缺less设置根视图控制器,并使窗口可见。

从你的代码我看到UIWindow对象没有初始化。 如果您未在App-Info.plist中提及任何Storyboard Name,则必须对其进行初始化。 此外,使窗口键和可见。 请更改您的代码,如下所示:

 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window=[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; UIStoryboard *storybord = [UIStoryboard storyboardWithName:@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]]; UIViewController *vc =[storybord instantiateInitialViewController]; [self.window addSubview:vc.view]; [self.window makeKeyAndVisible]; return YES; } 

现在不行。

在构build设置plist有添加一个主要故事板的条目(或类似的东西)。 在applicationDidFinishLoading中你所需要的只是返回YES;

如果你开始一个新的项目与故事板打勾,你可以看到确切的条目。

当它在那里,你不需要加载初始视图,因为它从故事板文件(是初始视图标志)。

HTH