iosswiftuiactivityviewcontroller

Basic example for sharing text or image with UIActivityViewController in Swift


I started my search by wanting to know how I could share to other apps in iOS. I discovered that two important ways are

These and other methods are compared in this SO answer.

Often when I am learning a new concept I like to see a basic example to get me started. Once I get something basic set up I can modify it how I like later.

There are many SO questions related to UIActivityViewController, but I couldn't find any that were just asking for a simple example. Since I just learned how to do this, I will provide my own answer below. Feel free to add a better one (or an Objective-C version).


Solution

  • UIActivityViewController Example Project

    Set up your storyboard with two buttons and hook them up to your view controller (see code below).

    enter image description here

    Add an image to your Assets.xcassets. I called mine "lion".

    enter image description here

    Code

    import UIKit
    class ViewController: UIViewController {
        
        // share text
        @IBAction func shareTextButton(_ sender: UIButton) {
            
            // text to share
            let text = "This is some text that I want to share."
            
            // set up activity view controller
            let textToShare = [ text ]
            let activityViewController = UIActivityViewController(activityItems: textToShare, applicationActivities: nil)
            activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
            
            // exclude some activity types from the list (optional)
            activityViewController.excludedActivityTypes = [ UIActivity.ActivityType.airDrop, UIActivity.ActivityType.postToFacebook ]
            
            // present the view controller
            self.present(activityViewController, animated: true, completion: nil)
            
        }
        
        // share image
        @IBAction func shareImageButton(_ sender: UIButton) {
            
            // image to share
            let image = UIImage(named: "Image")
            
            // set up activity view controller
            let imageToShare = [ image! ]
            let activityViewController = UIActivityViewController(activityItems: imageToShare, applicationActivities: nil)
            activityViewController.popoverPresentationController?.sourceView = self.view // so that iPads won't crash
            
            // exclude some activity types from the list (optional)
            activityViewController.excludedActivityTypes = [ UIActivity.ActivityType.airDrop, UIActivity.ActivityType.postToFacebook ]
            
            // present the view controller
            self.present(activityViewController, animated: true, completion: nil)
        }
        
    }
    

    Result

    Clicking "Share some text" gives result on the left and clicking "Share an image" gives the result on the right.

    enter image description here

    Notes

    See also