xcode - macOS NSExtensionMainStoryboard 无法加载

标签 xcode macos cocoa

与尝试使用 .xib 创建 iOS 扩展的许多问题不同,我尝试做与使用 StoryBoard 创建 macOS 扩展完全相反的事情。当 Xcode 为我的 macOS 项目创建应用程序扩展目标时,它只有一个 .xib 和 .xib 中 ViewController 的 NSExtensionPrincipalClass

所以我创建了一个“新建”->"file"->“ Storyboard”,并添加了 NSExtensionMainStoryboard到 plist 和没有扩展名的 StoryBoard 名称,我收到模糊的 Widget Simulator 错误:

"TodayExt[76374:5145083] Failed to load extension view controller"

我已经确认:StoryBoard 名称、StoryBoard 自定义类、StoryBoard 的目标成员身份、NSExtensionMainStoryboard 直接位于 NSExtension 下方。

来 self 的列表:

<dict>
    <key>NSExtensionMainStoryboard</key>
    <string>TodayStoryboard</string>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionPointVersion</key>
        <string>2.0</string>
    </dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.widget-extension</string>
    <key>com.apple.notificationcenter.widget.description</key>
    <string>TodayExt</string>
</dict>

最佳答案

这不是答案,而是一种解决方法。 The answer on Apple Dev forums说“你总是可以定义一个自定义 Storyboard并使用一些粘合代码将其嵌入到你的 Root View Controller 中。”

对于那些想知道“一点粘合代码”是什么的人,在 *ExtensionController 中,您可以添加如下内容:

override func viewDidLoad() {
    super.viewDidLoad()

    let myStoryboard = NSStoryboard.init(name: NSStoryboard.Name("MyStoryboard"), bundle: Bundle.main)
    let myStoryboardVC = myStoryboard.instantiateInitialController() as! MyStoryboardViewController
    self.view.autoresizesSubviews = true
    self.view.addSubview(myStoryboardVC.view)
    self.insertChildViewController(myStoryboardVC, at: 0)

我仍然很想知道不用胶水做到这一点的正确方法。

关于xcode - macOS NSExtensionMainStoryboard 无法加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51740076/

相关文章:

ios - 如何访问另一个应用程序的 iCloud 容器(使用另一个开发人员配置文件开发的应用程序和在该配置文件中创建的 icloud 容器)?

regex - NSRegularExpression 可选返回

ios - 在 iOS 中重新创建 Thrift 客户端

objective-c - 为什么在实现我自己的 KVC setter/getter 方法时会出现未捕获的异常

xcode - 重命名 XCode 项目,现在应用程序将无法加载

xcode - 我还能获得 Leopard 的 Xcode 吗?

objective-c - MacOS 辅助功能 API 更改所选范围位置的值

objective-c - cocoa windowDidEnterFullScreen 没有被调用

java - OSX : JavaVM, AWT/Swing 和可能的死锁

xcode - 在 Playground 中导入框架时出错