从情节提要中提取 nibs/xibs (iOS)

Posted

技术标签:

【中文标题】从情节提要中提取 nibs/xibs (iOS)【英文标题】:Extracting nibs/xibs from storyboards (iOS) 【发布时间】:2011-10-26 22:59:34 【问题描述】:

我创建了一个带有故事板的简单项目,现在意识到他们不支持 ios 4.x,我希望使用这些设备的用户能够下载我的应用程序。该应用程序只是一个翻转视图控制器,并且相当简单,但如果有办法从情节提要中提取 XIB,我更愿意这样做而不是重新创建它。

tl;dr:从 .storyboard 中获取 .xibs?

【问题讨论】:

【参考方案1】:

Xib 文件无法从情节提要中提取,但您可以通过将情节提要实例化为 UIStoryboard 对象并通过其标识符获取 UIViewController 来从情节提要中实例化 UIViewControllers,我是这样做的:

    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:
                            @"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];

    UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"myId"];

希望这会有所帮助。

【讨论】:

谢谢,但我的主要目标是避免在项目中使用 Storyboards 后使用它们 - 我必须添加对无法使用 Storyboards 的 4.0 的支持。跨度> 没有办法用Outlet来指代有outlet的控制器吧? 这没有回答问题:如何从情节提要中提取 XIB。此外,它给出了一个错误的答案“Xib 文件无法从情节提要中提取”,而实际上它们可以。【参考方案2】:

我发现最简单的方法是从情节提要中复制和粘贴项目,一次一个视图,然后为每个视图重新创建视图控制器。

但是,对于这样做的任何人,请注意,除了所有其他 XIB 之外,您必须为 MainWindow 制作一个 xib,并相应地连接它,包括设置窗口和应用程序代表。故事板为您处理所有这些,因此当您尝试避免它们时,您需要进行大量手动设置,从一开始就为您创建非故事板项目。不要像我做的那样,尝试让你的根控制器成为你的主视图控制器,因为它会说 UIApplication 如何不符合 XIB 的各个属性的键值。

【讨论】:

如果你能分享示例项目,那就太好了!【参考方案3】:

正如其他一些人所建议的那样,最好的办法是将情节提要中的视图克隆到 XIB 中。

【讨论】:

很好,这是最简单的方法,直到苹果在情节提要的选定视图上添加导出到 xib 选项。 这里你正在做的是从场景中获取视图,并使其成为 XIB 视图的子视图。将XIB 的视图替换为现场视图,您能做得更好吗?我已经尝试过了 - 它似乎有效【参考方案4】:

无法获取 xib 文件。您的故事板被编译为 nib 文件并打包到您的应用程序包中的 storyboardc 文件中。

要找到 nib 文件,请在 Finder 中选择您构建的可执行文件,然后右键单击“显示包内容”。导航到 en.lproj 目录并找到 storyboard.storyboardc 文件。在情节提要文件上再次右键单击“显示包内容”,您将找到您的笔尖。不过,它们对你没有多大用处,因为它们是编译的二进制 nib。

【讨论】:

【参考方案5】:

您可能无法从情节提要中提取 .xib,但试试这个。打开基于 .xib 的项目并为视图创建空的 .xib 文件,同时打开情节提要项目。选择故事板场景中的所有 UI 元素,然后将它们拖放到基于 .xib 的项目中。我以相反的方式完成了此操作(从 .xib 移动到情节提要),没有任何问题。

【讨论】:

以上是关于从情节提要中提取 nibs/xibs (iOS)的主要内容,如果未能解决你的问题,请参考以下文章

Xcode,从情节提要中提取视图到笔尖,最好的方法?

如何从通过情节提要创建的 UITableView 中提取 UIView?

如何在一个 tableView 中使用两个不同的自定义单元格?使用情节提要,iOS 7

iOS 应用程序加载器:错误 ITMS-90705:“未找到启动情节提要...”

将paintcode stylekit图像添加到情节提要不显示预览

IOS。如何从情节提要中的图像进行布局?