4

我想知道是否有人可以解释(或指出我正确的方向)

  1. 不使用情节提要时,用于实例化 UIWindow 的代码消失在哪里?在空应用程序项目模板中,该窗口是在您的 AppDelegate 中的应用程序 didFinishLaunnching... 中创建的。

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

    然而,如果使用故事板,上面的代码将被省略,尽管 UIApplication 显然知道从哪个窗口开始。

  2. 应用程序在哪里查找 info.plist 文件以了解从哪个故事板开始。

我确定这在我没有找到的地方都有很好的记录。阅读此iPhone 应用程序中的 UIWindow 在哪里实例化?但没有太大帮助。我在 iOS 上已经有一段时间了,直到现在,我才不必在应用程序的初始启动上搞砸。谢谢

4

2 回答 2

8

我认为您的意思是“使用情节提要时代码消失的位置。”

应用程序根据 Info.plist 中的“主故事板文件基本名称”(UIMainStoryboardFile)键加载故事板,并从该故事板加载带有“是初始视图控制器”切换集的视图控制器。

编辑:如评论中所问,以下代码(类似于基于 xib 的应用程序中的初始加载)将允许您在应用程序启动时按名称加载和显示情节提要:

-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"StoryboardName" bundle:nil];
    UIViewController *viewController = [storyboard instantiateInitialViewController];
    self.window.rootViewController = viewController;
    [self.window makeKeyAndVisible];
    return YES;
}
于 2012-10-16T06:14:26.957 回答
0

使用故事板时,要加载的故事板来自您应用的 Info.plist 文件。

您的 Info.plist 文件中将有一个部分包含如下键值对:

<key>UIMainStoryboardFile</key>
    <string>MainStoryboard</string>

在这种情况下,MainStoryboard 是加载的默认故事板的名称。

于 2012-10-16T06:12:08.750 回答