【发布时间】:2011-10-26 22:59:34
【问题描述】:
我创建了一个带有故事板的简单项目,现在意识到他们不支持 iOS 4.x,我希望使用这些设备的用户能够下载我的应用程序。该应用程序只是一个翻转视图控制器,并且相当简单,但如果有办法从情节提要中提取 XIB,我更愿意这样做而不是重新创建它。
tl;dr:从 .storyboard 中获取 .xibs?
【问题讨论】:
标签: objective-c ios storyboard
我创建了一个带有故事板的简单项目,现在意识到他们不支持 iOS 4.x,我希望使用这些设备的用户能够下载我的应用程序。该应用程序只是一个翻转视图控制器,并且相当简单,但如果有办法从情节提要中提取 XIB,我更愿意这样做而不是重新创建它。
tl;dr:从 .storyboard 中获取 .xibs?
【问题讨论】:
标签: objective-c ios storyboard
Xib 文件无法从情节提要中提取,但您可以通过将情节提要实例化为 UIStoryboard 对象并通过其标识符获取 UIViewController 来从情节提要中实例化 UIViewControllers,我是这样做的:
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:
@"MainStoryboard_iPhone" bundle:[NSBundle mainBundle]];
UIViewController *myController = [storyboard instantiateViewControllerWithIdentifier:@"myId"];
希望这会有所帮助。
【讨论】:
我发现最简单的方法是从情节提要中复制和粘贴项目,一次一个视图,然后为每个视图重新创建视图控制器。
但是,对于这样做的任何人,请注意,除了所有其他 XIB 之外,您必须为 MainWindow 制作一个 xib,并相应地连接它,包括设置窗口和应用程序代表。故事板为您处理所有这些,因此当您尝试避免它们时,您需要进行大量手动设置,从一开始就为您创建非故事板项目。不要像我做的那样,尝试让你的根控制器成为你的主视图控制器,因为它会说 UIApplication 如何不符合 XIB 的各个属性的键值。
【讨论】:
正如其他一些人所建议的那样,最好的办法是将情节提要中的视图克隆到 XIB 中。
【讨论】:
无法获取 xib 文件。您的故事板被编译为 nib 文件并打包到您的应用程序包中的 storyboardc 文件中。
要找到 nib 文件,请在 Finder 中选择您构建的可执行文件,然后右键单击“显示包内容”。导航到 en.lproj 目录并找到 storyboard.storyboardc 文件。在情节提要文件上再次右键单击“显示包内容”,您将找到您的笔尖。不过,它们对你没有多大用处,因为它们是编译的二进制 nib。
【讨论】:
您可能无法从情节提要中提取 .xib,但试试这个。打开基于 .xib 的项目并为视图创建空的 .xib 文件,同时打开情节提要项目。选择故事板场景中的所有 UI 元素,然后将它们拖放到基于 .xib 的项目中。我以相反的方式完成了此操作(从 .xib 移动到情节提要),没有任何问题。
【讨论】: