1

在我工作的一个 VC 中,有三个按钮,每个按钮都应该为不同类型的媒体提供一个文档选择器。我已经配置了这个——但我不确定如何处理我的委托方法

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentsAt urls: [URL]) {

我如何监控哪个文档选择器触发了委托方法,因为每个按钮都应该以不同的方式处理这个函数?我尝试使用controller.tag,但这似乎不是 a 的属性UIDocumentPickerViewController。任何指针将不胜感激谢谢。

4

1 回答 1

1

您可以在视图控制器中创建 3 个单独的实例UIDocumentPickerViewController并检查controller委托方法中的实例。

private lazy var documentPicker1: UIDocumentPickerViewController = {
    let controller = UIDocumentPickerViewController()
    controller.delegate = self
    return controller
}()

private lazy var documentPicker2: UIDocumentPickerViewController = {
    let controller = UIDocumentPickerViewController()
    controller.delegate = self
    return controller
}()

private lazy var documentPicker3: UIDocumentPickerViewController = {
    let controller = UIDocumentPickerViewController()
    controller.delegate = self
    return controller
}()

func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) {
    
    if controller == documentPicker1 {

    } else if controller == documentPicker2 {

    }
    ...
}

或者你可以保留一个属性view controller来跟踪哪个按钮被点击并在委托方法中检查它。

于 2020-08-16T20:17:02.667 回答