Я пытаюсь разделить мои представления SwiftUI на как можно меньше повторно используемых компонентов. Итак, у меня есть MainView, который находится сверху, а затем два вида (MyContentView и MenuView), которые оба живут внутри MainView. Оба внутренних представления имеют некоторую функциональность, которую я хочу обновить в MainView. Поэтому я подумал, что мог бы передать некоторую функцию в качестве параметра внутренним представлениям из MainView, поэтому при нажатии кнопки во внутренних представлениях это вызовет код в MainView. Самое близкое, что мне удалось получить, - это запуск параметра функции при каждом обновлении внутреннего представления. Каков наилучший способ достичь этого? Вот пример моего кода:
Главный вид:
struct MainView: View {
var body: some View {
VStack {
MyContentView(self.$doSomething)
MenuView(self.$doSomething)
}
}
func doSomething() {
print("do something")
}
}
struct MyContentView : View {
var doSomething : ()
var body: some View {
Button(action: { self.doSomething }) { Text("do something") }
}
}
struct MenuView : View {
var doSomething : ()
var body: some View {
Button(action: { self.doSomething }) { Text("Menu do something") }
}
}
Каков наилучший способ получения обратных вызовов из внутренних представлений?