ios - 关闭共享扩展自定义 View Controller

标签 ios swift share viewcontroller

我正在尝试创建一个与共享扩展一起使用的自定义 View Controller 。一切正常,但我不知道如何关闭自定义 View Controller 。基本上,我从 safari 启动我的共享扩展,并想完全忽略它并返回到 safari View 。我知道这应该不难,但我不熟悉共享扩展。下面是我的基本代码。谢谢。鲍勃

//
//  ShareViewController.swift
//  ShareExtension


import UIKit
import Social
import MobileCoreServices

class ShareViewController: UIViewController {
    private var url: NSURL?


    @IBAction func backButton(_ sender: Any) {
        print("back button pressed")

       self.dismiss(animated: true, completion: nil)
    }


    override func viewDidLoad()  {
        super.viewDidLoad()
    }


    private func getURL() {
        let extensionItem = extensionContext?.inputItems.first as! NSExtensionItem
        let itemProvider = extensionItem.attachments?.first as! NSItemProvider
        let propertyList = String(kUTTypePropertyList)
        if itemProvider.hasItemConformingToTypeIdentifier(propertyList) {
            itemProvider.loadItem(forTypeIdentifier: propertyList, options: nil, completionHandler: { (item, error) -> Void in
                guard let dictionary = item as? NSDictionary else { return }
                OperationQueue.main.addOperation {
                    if let results = dictionary[NSExtensionJavaScriptPreprocessingResultsKey] as? NSDictionary,
                        let urlString = results["URL"] as? String,
                        let url = NSURL(string: urlString) {
                        self.url = url
                    }
                }
            })
        } else {
            print("error")
        }
    }
}

最佳答案

您应该使用以下两个调用之一结束您的共享扩展工作:

self.extensionContext!.completeRequestReturningItems(nil, completionHandler: nil)

self.extensionContext!.cancelRequestWithError(NSError())

Apples share extension docs

为 swift 4 更新:

self.extensionContext!.completeRequest(returningItems: nil, completionHandler: nil)

self.extensionContext!.cancelRequest(withError:NSError())

关于ios - 关闭共享扩展自定义 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43670938/

相关文章:

ios - 通过两个 ViewController 传输数据

ios - 将 UIImage 的 base64EncodedString 保存到 Realm

ios - Swift 和 XCode 7 beta 2 不显示正在播放的歌曲的元数据

objective-c - CLLocationManager startUpdatingLocation 与 startMonitoringSignificantLocationChanges

ios - Swift (iOS) 插件 - 插件错误中未定义方法 - Cordova

android - 如果通过 ACTION_SEND 文件附件失败,则仅共享文本

mysql - 将 Couchdb 共享或复制到 Mysql

iphone - 如何通过 iPhone App 在 linkedin 上分享文本/网址?

ios - 在 Swift for iOS 中沿圆形路径绘制文本

ios - 自定义 uitableviewcell 重置 subview 框架无法正常工作