SwiftUIでUIActivityViewControllerを表示する


SwiftUIでUIActivityViewControllerを表示する方法です。 ボタンを押すと URL を共有するシートを表示します。

UIActivityViewController

参考: Showing ‘UIActivityViewController’ in SwiftUI

ActivityViewController.swift

import SwiftUI

struct ActivityViewController: UIViewControllerRepresentable {
    var activityItems: [Any]
    var applicationActivities: [UIActivity]? = nil
    
    func makeUIViewController(context: UIViewControllerRepresentableContext<ActivityViewController>) -> UIActivityViewController {
        let controller = UIActivityViewController(activityItems: activityItems, applicationActivities: applicationActivities)
        return controller
    }
    
    func updateUIViewController(_ uiViewController: UIActivityViewController, context: UIViewControllerRepresentableContext<ActivityViewController>) {}
}

ContentView.swift

import SwiftUI

struct ContentView: View {
    @State private var showingActivityIndicator: Bool = false

    var body: some View {
        Button("Share swiswiswift.com") {
            showingActivityIndicator = true
        }
        .sheet(isPresented: $showingActivityIndicator, content: {
            ActivityViewController(activityItems: [URL(string: "https://swiswiswift.com")!])
        })
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}