2015-04-28 9 views
1

У меня есть расширение общего доступа для приложения iOS с пользовательским интерфейсом. При запуске расширения загружается раскадровка, и пользовательский интерфейс отображается ОК, но beginRequestWithExtensionContext не вызывается.Share extension - beginRequestWithExtensionContext не называется

The (упрощенный) код вид контроллера:

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 может не вызывался?

ответ

1

ОК, поэтому через 2 дня после этого перейдите и вперед, я понял, что через 30 минут после публикации вопроса о ТАК! Так, в случае, если кто-то есть такая же проблема ...

Раскадровка имеет UINavigationController в качестве своего исходного контроллера представления, так beginRequestWithExtensionContext был, конечно же, обстреливали, что вместо ShareViewController.

Я подклассы UINavigationController чтобы решить эту проблему:

class ShareNavigationController: UINavigationController, NSExtensionRequestHandling { 

    override func beginRequestWithExtensionContext(context: NSExtensionContext) { 

     super.beginRequestWithExtensionContext(context) 

     (self.topViewController as! ShareViewController).handleContext(context) 
    } 
} 
Смежные вопросы