watchOS 如何找到主情节提要文件?

Posted

技术标签:

【中文标题】watchOS 如何找到主情节提要文件?【英文标题】:How does watchOS find the main storyboard file? 【发布时间】:2017-03-27 23:11:10 【问题描述】:

出于功能标志的原因,我想要两个故事板文件。一次只会使用一个,但我希望有两个文件用于在构建之间来回切换。但是,我找不到 watchOS 确定要加载哪个情节提要文件的位置。

ios 在 Info.plist 中有一个键 UIMainStoryboardFile。但是watchOS has no such key。

当我在 GeneralInfo 部分检查我们当前的 Watch Extension 和 Watch App 目标时,我没有看到故事板文件的提及。

请注意,watchOS 确实 具有 Info.plist 的 WKExtensionDelegateClassName 键,这也将用于我的功能标志目的。但是,我的WKExtensionDelegate 中没有代码指定特定的故事板。

在 Xcode 中,当我在 File Inspector 右侧窗格中查看当前观看故事板文件时,我没有看到初始故事板的特殊指示器标记​​。以防万一它被列在那里。

App Programming Guide for watchOS 也没有解释如何建立连接。

有什么想法吗?

【问题讨论】:

【参考方案1】:

所以经过多次试验:

结论:

我不能在 watchOS 中拥有互斥的 Storyboard。 watchOS 似乎将所有情节提要合并为一件事。 因此,当您按名称引用 WKInterface​Controller 时,watchOS 只会选择正确的故事板。 要展示标志情节提要场景,请确保您没有加载错误的场景。

证据

如果在多个情节提要中将多个界面控制器指定为“是初始控制器”,则构建 watchOS 应用程序扩展会失败并出现错误。错误是: Multiple main entry points were specified. Please designate a single interface controller as the entry point of your watch application.

我设计了以下场景并且成功了:

带有接口控制器标识符“Bobby”的 Main.storyboard。 Main2.storyboard 带有接口控制器标识符“Sue”。 Main2.storyboard 接口控制器Sue“是初始控制器”。 Bobby 有一个调用WKInterfaceController.reloadRootControllers(withNames: ["Sue"], contexts: nil) 的按钮 按钮按预期工作并从 Bobby 加载 Sue 界面控制器场景。

【讨论】:

以上是关于watchOS 如何找到主情节提要文件?的主要内容,如果未能解决你的问题,请参考以下文章

找不到单元标识符(无情节提要)

使用 Swift 在没有情节提要的情况下展开 segue

Xcode 6,主情节提要,颜色关闭

Xcode 如何加载主情节提要?

如何在情节提要中使用 NSURLConnection 下载文件

使用情节提要的多节 UITableView