Xcode 从 .xib 过渡到 Storyboard

Posted

技术标签:

【中文标题】Xcode 从 .xib 过渡到 Storyboard【英文标题】:Xcode Transitioning from .xib to Storyboards 【发布时间】:2013-01-11 06:59:26 【问题描述】:

我下载了一个示例 xcode 项目来测试它。它有 2 个 .xib 文件(每个都有自己的视图控制器标题和主文件)。我添加了一个故事板,并将 ViewControllers 类设置为游戏和 ViewController(.xibs 的名称),并将主故事板设置为摘要中的故事板,但每当我运行应用程序时,它只运行 .xibs。 我怎样才能让它运行故事板而不是 .xibs? 故事板中是否有我需要更改的部分,或者是否在每个 .xibs .h 和 .m 的代码中?

感谢您的帮助

【问题讨论】:

【参考方案1】:

查看您的 App Delegate。这是一个根据目标条件设置为使用 XIBS 或 Storyboard 运行的示例...

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

#ifdef FORMAT_XIB
    NSLog (@"XIB VERSION");
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    CVViewController* myViewController = nil;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
        myViewController = [ [CVViewController alloc] initWithNibName:@"CVViewController_iPhone" bundle:nil ];
     else 
        myViewController = [ [CVViewController alloc] initWithNibName:@"CVViewController_iPad" bundle:nil ];
    
    self.window.rootViewController = myViewController;
    [self.window makeKeyAndVisible];
#else
    NSLog (@"STORYBOARD VERSION");
#endif
    return YES;

如果您正在运行 Storyboard 应用程序,则不需要所有这些。删除它,以便应用程序 didFinishLaunchingWithOptions: 方法只显示:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

return YES;

【讨论】:

哇.. 我对这个真的很陌生,有点不知所措。这就是我所拥有的:- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // 应用程序启动后自定义的覆盖点。 self.viewController = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible];返回是;知道我需要什么吗? 对不起,我应该给一个简短的答复。我想说的是,应用程序中的所有内容 didFinishLaunchingWithOptions: 方法都需要执行 - 这一切都是为了加载 Xib。因此,删除除return YES; 之外的所有内容...此外,如果您对问题有更多信息,则应该编辑您的问题(添加更新没有问题),而不是试图将其全部压缩成评论... 感谢您的所有帮助。我将 .xib 的所有内容复制到一个带有情节提要的新项目中,并复制了我的 ViewController.h 和 .m 文件,保留了普通的委托文件。现在可以正常使用了,再次感谢

以上是关于Xcode 从 .xib 过渡到 Storyboard的主要内容,如果未能解决你的问题,请参考以下文章

如何将对象添加到空的用户界面文件?

将 xib 文件迁移到 Xcode 4.4

编辑 XIB 时 XCode 7.3 崩溃

Xcode:跨 XIB 文件的 Outlets 和 Actions

Swift 3 - 如何在 .xib 文件上为 UIScrollView 分配委托?

Interface Builder 找不到 .xib - Xcode 5.0.2