watchOS 如何找到主故事板文件?

Jef*_*eff 1 info.plist watchkit

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

iOS 在 Info.plist 中有一个键UIMainStoryboardFile。但watchOS 没有这样的密钥

当我在“常规”“信息”中检查当前的 Watch Extension 和 Watch App 目标时部分中检查当前的 Watch Extension 和 Watch App 目标时,我发现没有提及故事板文件。

请注意,watchOS确实WKExtensionDelegateClassNameInfo.plist 的密钥,这也将满足我的功能标记目的。但是,我的代码中没有WKExtensionDelegate指定特定的故事板。

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

watchOS 的应用程序编程指南也没有解释如何建立连接。

有任何想法吗?

Jef*_*eff 5

所以经过多次实验:

\n

结论:

\n
    \n
  • 我不能在 watchOS 中拥有互斥的故事板。
  • \n
  • watchOS 似乎将所有故事板合并为一件事。
  • \n
  • 所以当你引用一个WKInterface\xe2\x80\x8bController名称引用时,watchOS 只会选择正确的故事板。
  • \n
  • 要使用标记故事板场景,只需确保您没有加载错误的场景即可。
  • \n
\n

证据

\n

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

\n

我设计了以下场景并且它有效:

\n
    \n
  • Main.storyboard 带有界面控制器标识符“Bobby”。
  • \n
  • Main2.storyboard 具有界面控制器标识符“Sue”。
  • \n
  • Main2.storyboard界面控制器“是初始控制器”。
  • \n
  • 鲍比有呼叫按钮WKInterfaceController.reloadRootControllers(withNames: ["Sue"], contexts: nil)
  • \n
  • Button 按预期工作并从Bobby加载Sue界面控制器场景。
  • \n
\n