Ios 如何为发送文件添加更多选项

Ios 如何为发送文件添加更多选项,ios,swift,Ios,Swift,我创建了通过电子邮件发送或打印文件的代码 但我想添加更多选项,如通过Gmail发送、将文件保存到iBooks、保存到Dropbox等 我增加了两个需求:电子邮件和打印。 我想添加一个Gmail和几个选项 代码如下: func actionMenuViewControllerShareDocument(_ actionMenuViewController: ActionMenuViewController) { let mailComposeViewController = MFMailC

我创建了通过电子邮件发送或打印文件的代码

但我想添加更多选项,如通过Gmail发送、将文件保存到iBooks、保存到Dropbox等

我增加了两个需求:电子邮件和打印。 我想添加一个Gmail和几个选项

代码如下:

func actionMenuViewControllerShareDocument(_ actionMenuViewController: ActionMenuViewController) {
    let mailComposeViewController = MFMailComposeViewController()
    if let lastPathComponent = pdfDocument?.documentURL?.lastPathComponent,
        let attachmentData = pdfDocument?.dataRepresentation() {

        mailComposeViewController.addAttachmentData(attachmentData, mimeType: "application/pdf", fileName: lastPathComponent)
    }
}

func actionMenuViewControllerPrintDocument(_ actionMenuViewController: ActionMenuViewController) {
    let printInteractionController = UIPrintInteractionController.shared
    printInteractionController.printingItem = pdfDocument?.dataRepresentation()
    printInteractionController.present(animated: true, completionHandler: nil)
}
代码2

import UIKit

class ActionMenuViewController: UITableViewController {
    weak var delegate: ActionMenuViewControllerDelegate?

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.isScrollEnabled = false
        tableView.separatorInset = .zero
    }

    override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        if indexPath.row == 0 {
            delegate?.actionMenuViewControllerShareDocument(self)
        } else if indexPath.row == 1 {
            delegate?.actionMenuViewControllerPrintDocument(self)

        tableView.deselectRow(at: indexPath, animated: true)
    }
}

protocol ActionMenuViewControllerDelegate: class {
    func actionMenuViewControllerShareDocument(_ actionMenuViewController: ActionMenuViewController)
    func actionMenuViewControllerPrintDocument(_ actionMenuViewController: ActionMenuViewController)

}

试试下面的方法,你会得到几个选项,比如通过Gmail发送、将文件保存到iBooks、保存到Dropbox等等,这些都是iPhone支持的

比如说,您的文档目录中有一个.pdf文件

    var paths = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)
    let documentsDirectory: String = paths[0]
    let fullPath: String = URL(fileURLWithPath: documentsDirectory).appendingPathComponent("\("FileName").pdf").absoluteString
    let url = URL(fileURLWithPath: fullPath)
    let activityItems = [url]
    let activityViewController = UIActivityViewController(activityItems: activityItems, applicationActivities: nil)
    activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash

    self.present(activityViewController, animated: true, completion: nil)

使用
UIActivityViewController
@rmaddy,而不是自己做所有这些。事实上,我不想使用它,只是为了清楚起见,不是给用户一组标准的、灵活的选项,让他们决定如何使用文件,而是给他们一个非标准的、有限的选项选择。最重要的是,你想写更多的代码,而不仅仅是为了让用户的应用体验更糟糕。既然我们已经弄清楚了,你的问题是什么?我们知道您想添加Gmail,但这不是问题。@rmaddy我有一个应用程序,它将修改PDF文件。如果您添加文本并使用
UIActivityViewController
并希望通过电子邮件发送,则您添加的文本不会出现。我不知道为什么,但通过我在主题中添加的方式,我可以在发送到电子邮件后或我尝试过的任何地方找到文本。如果您的实际问题与使用
UIActivityViewController发送修改过的PDF文件有关,为什么不向他们发布有关该问题的问题?@mostafizur rahman mafi我尝试过您的代码,但没有给我答案任何操作请重试,如果您仍然面临任何问题,请告知我们。我使用了代码,但当我单击“打印”时,例如,PDF文件不出现。请将PDF文件存储到您的iPhone文档目录中,并尝试从该目录中读取该文件。没有新问题