如何从 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":
假设您已将 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":