SwiftUI NavigationLink: как вызвать функцию перед отображением вида назначения
Я хотел бы вызвать функцию после щелчка по элементу, но перед отображением целевого представления.
Код ниже, похоже, не работает:
myFunction
вызывается, но целевой вид не отображается.
Похоже, что
onTapGesture
перезаписывает
NavigationLink
пункт назначения.
NavigationView {
List(restaurants) { restaurant in
NavigationLink(destination: RestaurantView(restaurant: restaurant)) {
RestaurantRow(restaurant: restaurant)
}.onTapGesture { myModel.myFunction(restaurant) }
}
}
Как я могу получить и то, и другое при нажатии на элемент списка?
- функция называется
- отображается вид назначения
1 ответ
Попробуй добавить
NavigationLink
в
Button
, нравиться:
Button(action: {
//Call here
myModel.myFunction(restaurant)
}, label: {
NavigationLink(destination: RestaurantView(restaurant: restaurant)) {
RestaurantRow(restaurant: restaurant)
}
})
ИЗМЕНИТЬ вставленный тестовый код, попробуйте напрямую
struct TestNavigationView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Text("Detail").onAppear() {
test()
}) {
Text("Click")
}
}
}
}
func test() {
print("Hell0")
}
}
другой подход: (может не работать, если
List
там)
struct TestNavigationView: View {
var body: some View {
NavigationView {
VStack {
NavigationLink(destination: Text("Detail")) {
Text("Click")
}.simultaneousGesture(TapGesture().onEnded{
test()
})
}
}
}
func test() {
print("Hell0")
}
}