与尝试使用.xib创建iOS扩展的许多问题不同,我尝试与使用StoryBoard创建macOS扩展完全相反。当Xcode为我的macOS项目创建App Extension目标时,它在.xib中只有一个.xib和一个ViewController的NSExtensionPrincipalClass
因此,我创建了一个New-> File-> Storyboard,然后将NSExtensionMainStoryboard添加到了plist中,并且将StoryBoard的名称添加了无扩展名,我得到了模糊的Widget Simulator错误:
"TodayExt[76374:5145083] Failed to load extension view controller"
我已经确认:StoryBoard名称,StoryBoard自定义类,StoryBoard的目标成员身份,NSExtensionMainStoryboard位于NSExtension的正下方。
在我的列表中:
<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>
答案 0 :(得分:0)
这不是答案,而是一种解决方法。 The answer on Apple Dev forums说:“您始终可以定义自定义情节提要,并使用一些粘合代码将其嵌入到根视图控制器中。”
对于那些想知道“粘合代码位”是什么的人,您可以在* 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)
我仍然很想知道没有胶水的正确方法。