2016-12-14 4 views
0

私が使っているアプリでは、プログラムでPDFを構築して表示できます。私が問題を抱えているのは、ユーザーがファイルをサポートできるアプリケーション(電子メール、ドロップボックスなど)を使用して「共有」できるようにすることです。私はコードで午前のはここPDFをUIActivityViewControllerに渡す

は次のとおりです。

@IBAction func actionShare(_ sender: Any) { 
    let activityViewController: UIActivityViewController = UIActivityViewController(activityItems: [pdfPath = createPDF()], applicationActivities: nil) 
    activityViewController.popoverPresentationController?.sourceView=self.view 
    present(activityViewController, animated: true, completion: nil) 
} 

createPDF()PDFを作成し、文字列としてドキュメントのパスを返す関数です。私は「共有」ボタンを押すと

は、私が得るすべてはこれです:

enter image description here

コンパイラは私に叫ぶしない、とだけは、これは言っています

[MC] Filtering mail sheet accounts for bundle ID: Business-Account-Finder, source account management: 1 
[MC] Result: YES 
[MC] Filtering mail sheet accounts for bundle ID: Business-Account-Finder, source account management: 1 
[MC] Result: YES 

私が使用しているテスト用iPadでは、機能するGmailアカウントでメールが設定されています。デフォルト以外のアプリはインストールされておらず、電子メールアカウントの設定だけがパーソナライズされている。

何が欠けているのですか?

答えて

0

2つのこと:

  1. あなたは文字列としてファイルパス、URLをする必要はありません。
  2. [pdfPath = createPDF()]を使用しないでください。あなたはpopoverPresentationControllersourceViewを使用するとき

    @IBAction func actionShare(_ sender: Any) { 
        let pdfPath = createPDF() 
        let pdfURL = URL(fileURLWithPath: pdfPath) 
        let activityViewController: UIActivityViewController = UIActivityViewController(activityItems: [pdfURL], applicationActivities: nil) 
        activityViewController.popoverPresentationController?.sourceView=self.view 
        present(activityViewController, animated: true, completion: nil) 
    } 
    

    あなたはまた、sourceRect設定する必要があります。

はここにいくつか更新されたコードです。

completionWithItemsHandlerも設定する必要があります。

+0

これは完璧に機能しました!更新されたコードとヒントをありがとう。 = D –

関連する問題