I started my search by wanting to know how I could share to other apps in iOS. I discovered that two important ways are
UIActivityViewController
UIDocumentInteractionController
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).
A view controller that you use to offer standard services from your app.
If the UIActivityViewController is dismissed without any action, the value for activityType will be nil and the value of completed will be false . In the OP's scenario, the view controller won't be dismissed if they cancel the share activity.
Set up your storyboard with two buttons and hook them up to your view controller (see code below).
Add an image to your Assets.xcassets. I called mine "lion".
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) } }
Clicking "Share some text" gives result on the left and clicking "Share an image" gives the result on the right.
excludedActivityTypes
as shown in the code above.popoverPresentationController?.sourceView
line will cause your app to crash when run on an iPad.UIDocumentInteractionController
for that.UIActivityViewController
documentationUIDocumentInteractionController
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With