【发布时间】:2020-09-08 04:06:58
【问题描述】:
我试图通过将 UIActivityViewController 包含在帮助程序类中来在我的应用程序的多个部分中呈现它。以下代码运行良好,我可以从我的应用程序中的任何其他视图控制器调用 showActivityController() 方法,并且 UIActivityViewController 会按预期显示。
我的问题是,我真的需要在DispatchQueue.main.async 中包含代码以显示UIActivityViewController,如下所示?
我在没有它的情况下尝试了它,它工作正常,但我想确保将它留在那里以后不会造成任何问题。
class HelperClass: UIViewController, UIActivityItemSource{
static let shared = HelperClass()
func showActivityController(){
DispatchQueue.main.async {
let items = [self]
let activityController = UIActivityViewController(activityItems: items, applicationActivities: nil)
UIApplication.shared.keyWindow?.rootViewController?.present(activityController, animated: true)
}
}
func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any {
return "Return Type"
}
func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? {
if activityType == .message{
return "Text for iMessage"
}else if activityType == .mail{
return "Text for Email"
}else{
return "Text for all other apps"
}
}
func activityViewController(_ activityViewController: UIActivityViewController, subjectForActivityType activityType: UIActivity.ActivityType?) -> String {
return "Email Subject"
}
}
其他视图控制器的使用
HelperClass.shared.showActivityController()
【问题讨论】:
标签: ios swift uiactivityviewcontroller dispatch-queue