SwiftUIで画面遷移先のViewから遷移元のメソッドを呼び出す


SwiftUIで画面遷移先のViewから遷移元のメソッドを呼び出す方法です。

SwiftUIで画面遷移先のViewから遷移元のメソッドを呼び出す

ContentView.swift

import SwiftUI

struct ContentView: View, MyProtocol {
    @State var text: String = "My Text"
    var body: some View {
        NavigationView {
            VStack {
                Text(text)
                NavigationLink(destination: SecondView(delegate: self)) {
                    Text("2nd View")
                }
            }
        }
    }

    func myFunc() {
        text = "Changed Text"
    }
}

struct SecondView: View {
    var delegate: MyProtocol
    var body: some View {
        Button(action: {
            self.delegate.myFunc()
        }) {
            Text("ChangeText")
        }
    }
}

MyProtocol.swift

import Foundation

protocol MyProtocol {
    func myFunc()
}

SecondView.swift

import SwiftUI

struct SecondView: View {
    var delegate: MyProtocol
    var body: some View {
        Button(action: {
            delegate.myFunc()
        }) {
            Text("ChangeText")
        }
    }
}