如何从 iOS playground 中的文件实例化情节提要?

How do you instantiate a Storyboard from a file within an iOS playground?

假设您已将 Main.storyboard 从 Xcode 6 项目复制到独立 playground 的 Resources 目录。如何使用 Main.storyboard 文件实例化 UIStoryboard?尝试通过 nil 使用默认设置无效:

let storyboard = UIStoryboard(name: "Main", bundle: nil)

也没有明确使用主包:

let storyboard = UIStoryboard(name: "Main", bundle: NSBundle.mainBundle())

即使游乐场是故事板 Xcode 项目的一部分,我也会收到相同的错误:"Could not find a storyboard named 'main' in bundle NSBundle..."

似乎包路径是正确的,应该能够反序列化故事板文件。

我发现了这个:

“你可以将一个 xib 文件放入你的资源中,但 playground 无法读取它或 运行 因为它不是编译形式。今天,我(终于!)想到了使用 ibtool 来预将我的 MainMenu.xib 文件编译成 nib 然后加载它。当你安装 Xcode 的命令行工具时,ibtool 会添加到 /usr/bin。所以你需要做的就是编译你的 nib发出以下命令:

ibtool --compile MainMenu.nib MainMenu.xib`

将生成的 nib 放入 playground 的资源文件夹中,然后就可以加载它了。

http://ericasadun.com/2015/03/25/swift-todays-wow-moment-adding-menus-to-playgrounds/

您的故事板将被编译成多个 nib(每个场景一个)

希望对您有所帮助

与@ybakos 的回答类似,但要访问带有要加载的故事板的框架(然后 Playground 和您的应用程序都可以直接使用相同的故事板):

如果您在为模拟器编译的框架中有一个情节提要,并且还嵌入了一个工作项目中,该项目还位于一个工作区中,您将能够在同一个工作区的操场上加载该框架通过框架包,像这样:

let frameworkBundle = Bundle(identifier: "com.kigisoft.KGWeatherMap")
let storyboard = UIStoryboard(name: "WeatherMap", bundle: frameworkBundle)

您可以从此 Dropbox link 下载示例项目 "StoryboardPlay":

Playground Example Projects