我们假设您已将Xcode 6项目中的 Main.storyboard 复制到独立游乐场的 Resources 目录中。如何使用 Main.storyboard 文件实例化UIStoryboard
?尝试通过nil
使用默认设置不起作用:
let storyboard = UIStoryboard(name: "Main", bundle: nil)
也没有明确使用主捆绑包:
let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())
即使操场是故事板的Xcode项目的一部分,我也会收到同样的错误:"找不到名为' main'在捆绑NSBundle ..."
看起来捆绑路径是正确的,并且应该能够反序列化故事板文件。
答案 0 :(得分:13)
我发现了这个:
"您可以将xib文件放入资源中,但操场无法读取或运行它,因为它不是以编译形式。今天,我(最终!)想到使用ibtool将我的MainMenu.xib文件预编译为nib,然后加载它。当您安装Xcode的命令行工具时,ibtool会添加到/ usr / bin。因此,编译nib所需要做的就是发出以下命令:
ibtool --compile MainMenu.nib MainMenu.xib`
将生成的笔尖扔进游乐场的资源文件夹,然后就可以加载了它。"
在http://ericasadun.com/2015/03/25/swift-todays-wow-moment-adding-menus-to-playgrounds/
您的故事板将被编译成多个笔尖(每个场景一个)
希望有所帮助
答案 1 :(得分:3)
与@ybakos答案类似,但是要访问带有要加载的故事板的框架(然后Playground和您的应用都可以直接使用相同的故事板):
如果您在为模拟器编译的框架中有一个Storyboard,并且它还嵌入在工作区中的工作项目中,您将能够通过该工作区在同一工作区的操场中加载框架。框架包,如下所示:
let frameworkBundle = Bundle(identifier: "com.kigisoft.KGWeatherMap")
let storyboard = UIStoryboard(name: "WeatherMap", bundle: frameworkBundle)
您可以从此Dropbox链接下载示例项目“StoryboardPlay”: