有没有人知道在没有MainInterface.storyboard
模板附带的情况下编写 iOS 8 共享扩展的好方法?
当我删除文件或删除NSExtensionMainStoryboard
fromInfo.plist
时,扩展程序停止工作(当您点击共享窗格中的按钮时没有任何反应)。我们尝试替换NSExtensionMainStoryboard
whichNSExtensionPrincipalClass
也不起作用。
有任何想法吗?
有没有人知道在没有MainInterface.storyboard
模板附带的情况下编写 iOS 8 共享扩展的好方法?
当我删除文件或删除NSExtensionMainStoryboard
fromInfo.plist
时,扩展程序停止工作(当您点击共享窗格中的按钮时没有任何反应)。我们尝试替换NSExtensionMainStoryboard
whichNSExtensionPrincipalClass
也不起作用。
有任何想法吗?
弄清楚了!
原来在 Swift 中有一个奇怪的模块命名事情,所以你可以通过@objc
给类添加一个名字来修复它:
@objc(PrincipalClassName)
class PrincipalClassName: UIViewController {
...
然后将NSExtensionPrincipalClass
密钥设置为PrincipalClassName
。
而不是@objc
hack,在 Swift 中执行此操作的正确方法是将模块名称包含在 中NSExtensionPrincipalClass
,即
<key>NSExtensionPrincipalClass</key>
<string>$(PRODUCT_MODULE_NAME).ActionViewController</string>
(否则记录错误:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[__NSDictionaryM setObject:forKey:]: object cannot be nil (key: ...)'
希望能帮助将来遇到此错误的人。)
无法添加评论,但它不再是NSPrincipalClass而是NSExtensionPrincipalClass