如何解决从自定义 SwiftUI 视图中关闭共享扩展
我正在使用来自主要目标的自定义 SwiftUI 视图来从共享扩展的 ShareViewController 共享文档。在浏览三个视图后使用导航链接并共享文档。文档上传没有任何问题,但我不知道如何在上传完成后关闭视图。
这是导航的样子
ShareViewController(SLComposeServiceViewController) -> PropertyListView -> UnitListView -> UploadView
didPost 看起来像这样
override func didSelectPost() {
print("In Did Post")
if let item = self.extensionContext?.inputItems[0] as? NSExtensionItem{
print("Item \(item)")
print(item.attachments)
print(item.attachments![0])
let itemProvider = item.attachments![0]
if itemProvider.hasItemConformingToTypeIdentifier("com.adobe.pdf"){
itemProvider.loadItem(forTypeIdentifier: "com.adobe.pdf",options: nil) { (item,error) in
if error != nil{
print(error!.localizedDescription)
}else{
if let url = item as? URL{
print(url)
dispatchQueue.main.async{
//saving to user defaults
let dict: [String : Any] = ["dcument" : url.absoluteString,"name" : self.contentText.isEmpty ? url.lastPathComponent : self.contentText!]
let savedata = UserDefaults.init(suiteName:"group.in.pixbit.hijricalendar")
savedata?.set(dict,forKey: "sharedDocument")
savedata?.synchronize()
//loading swiftui view
let swiftuiView = NavigationView{PropertyListView()}
let vc = UIHostingController(rootView: swiftuiView)
let newView = vc
self.view.window?.rootViewController = newView
self.view.window?.makeKeyAndVisible()
}
}
}
}
}
}
}
解决方法
您需要在视图控制器的 completeRequest(returningItems:completionHandler:)
上调用 extensionContext
。
这是我的一个应用的代码片段:
override func didSelectPost() {
let artifact = Artifact(title: self.contentText,author: self.metaAuthor,url: url?.absoluteString ?? metaUrl ?? "",imageUrl: metaImage,siteName: self.siteName,dateAdded: Date(),excerpt: metaDescription,notes: "",tags: nil)
self.artifactRepository?.addArtifact(artifact)
self.extensionContext?.completeRequest(returningItems: [],completionHandler:nil)
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。