1

我有一个具有自定义 UI 的 iOS 应用程序的共享扩展。运行扩展时,情节提要已加载,并且 UI 显示正常,但未beginRequestWithExtensionContext调用。

(简化的)视图控制器代码:

class ShareViewController: UIViewController, NSExtensionRequestHandling {

    // This is called…
    override func viewDidLoad() {
        super.viewDidLoad() 
    }

    // …but this isn't!
    override func beginRequestWithExtensionContext(context: NSExtensionContext) {            
        println("beginRequestWithExtensionContext")
    }
}

NSExtensionAttributes

<dict>
    <key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>1</integer>
        </dict>
    </dict>
    <key>NSExtensionPointIdentifier</key>
    <string>com.apple.share-services</string>
    <key>NSExtensionMainStoryboard</key>
    <string>Share</string>
</dict>
</plist>

beginRequestWithExtensionContext 关于为什么不被调用的任何想法?

4

1 回答 1

2

好的,所以在前后来回 2 天后,我在 SO 上发布问题后 30 分钟想通了!所以,万一其他人也有同样的问题……</p>

故事板有一个UINavigationController作为它的初始视图控制器,所以beginRequestWithExtensionContext当然是在那个而不是ShareViewController.

UINavigationController进行了子类化以解决问题:

class ShareNavigationController: UINavigationController, NSExtensionRequestHandling {

    override func beginRequestWithExtensionContext(context: NSExtensionContext) {

        super.beginRequestWithExtensionContext(context)

        (self.topViewController as! ShareViewController).handleContext(context)
    }
}
于 2015-04-28T08:23:27.250 回答