为什么 UIDocumentMenu 委托给自己不起作用?

Why UIDocumentMenu Delegate to self doesn't work?

我正在关注 UIDocumentMenuViewController 的 Apple 文档,以下是我的代码。 importMenu.delegate = self 不起作用并且 Xcode 显示:无法将类型 'ViewController' 的值分配给类型 'UIDocumentMenuDelegate?' 。请帮忙。谢谢!

import UIKit

class ViewController: UIViewController  {

override func viewDidLoad() {
    super.viewDidLoad()

    let importMenu = UIDocumentMenuViewController(documentTypes: ["public.text", "public.data"], inMode: .Import)

    importMenu.delegate = self

    self.presentViewController(importMenu, animated: true, completion: nil)

   }
}

您的委托 class 应该从视图控制器中的 UIDocumentMenuViewDelegate 扩展

import UIKit

class ViewController: UIViewController, UIDocumentMenuViewDelegate  {

override func viewDidLoad() {
    super.viewDidLoad()

    let importMenu = UIDocumentMenuViewController(documentTypes: ["public.text", "public.data"], inMode: .Import)

    importMenu.delegate = self

    self.presentViewController(importMenu, animated: true, completion: nil)

   }
}

根据 UIDocumentMenuDelegate Protocol Reference,您的 ViewController 必须符合 UIDocumentMenuDelegate 并且必须实现 documentMenu:didPickDocumentPicker:

extension ViewController: UIDocumentMenuDelegate {
    func documentMenu(documentMenu: UIDocumentMenuViewController, didPickDocumentPicker documentPicker: UIDocumentPickerViewController) {
        // do stuffs here
    }
}