【问题标题】:How does watchOS find the main storyboard file?watchOS 如何找到主情节提要文件?
【发布时间】: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 也没有解释如何建立连接。

有什么想法吗?

【问题讨论】:

    标签: watchkit info.plist


    【解决方案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 界面控制器场景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 2020-12-25
      • 2012-01-05
      相关资源
      最近更新 更多