从我的共享扩展ShareViewController显示UIAlertController

时间:2016-10-21 05:29:25

标签: ios swift uialertcontroller slcomposeviewcontroller share-extension

我目前正在swift 3中开发我的第一个分享扩展程序。 这实际上是一个非常简单的扩展,直接从Safari共享文本或网址(通过从网页内容中选择文本或网址)

我想在ShareViewController(SLComposeServiceViewController)的didSelectPost()中显示一个UIAlertController,但这实际上并不起作用。在用户点击发布按钮后,警报将仅显示几纳秒。仅供参考,这是我正在使用的代码:

func displayUIAlertController(title: String, message: String) {

    let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil)
    self.present(alert, animated: true, completion: nil)

}

然后在didSelectPost()

displayUIAlertController(title: "title", message: "test")

有没有办法从共享扩展中显示UIAlertController? 感谢。

编辑。我想我明白了,但是我现在唯一关心的是确保当他们为appstore验证我的app应用时,Apple会接受这个(这将是我的第一个应用程序,我甚至没有付费开发者帐户)

这是我的解决方案:

func displayUIAlertController(title: String, message: String) {

    let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)

    alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { (action: UIAlertAction!) -> () in
        self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
    }))

    self.present(alert, animated: true, completion: nil)
}

所以现在在用户单击警报按钮而不是在didSelectPost()结束时调用self.extensionContext!.completeRequest()。 它就像一个魅力,但我仍然想知道这是否是一个“安全”的解决方案?如果是这样,我想我的解决方案可以帮助解决其他相关问题。

希望有人能让我知道。

1 个答案:

答案 0 :(得分:0)

我编辑了最初的帖子,答案有效。 在没有得到你们的任何确认的情况下,我想我的解决方案是最好的解决方案,但如果有不同的事情可以解决,或者在Apple验证过程中这个解决方案可能会出现问题,请告诉我。

这是我的解决方案:

func displayUIAlertController(title: String, message: String) {

let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)

alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: { (action: UIAlertAction!) -> () in
    self.extensionContext!.completeRequest(returningItems: [], completionHandler: nil)
}))

self.present(alert, animated: true, completion: nil)
}

所以现在在用户点击警告的按钮而不是在didSelectPost()结束时调用self.extensionContext!.completeRequest()。它就像一个魅力,但我仍然想知道这是否是一个安全的"解决与否?如果是这样,我想我的解决方案可以帮助解决其他相关问题。