Как перемещаться в SwiftUI, одновременно выполняя логику и создавая новый объект?IOS

Программируем под IOS
Anonymous
Как перемещаться в SwiftUI, одновременно выполняя логику и создавая новый объект?

Сообщение Anonymous »

У меня есть EditTapasView, который предназначен для редактирования любых тапас, созданных пользователем. Чтобы создать его, они могут нажать кнопку «Новые тапы», отправив их именно в этот EditTapasView с вновь созданным тапасом.
До сих пор все работало с использованием листа.

Код: Выделить всё

Button(action: {
newTapas = addTapas()
/// Delay the toggle of the Sheet by .1 second.
DispatchQueue.main.asyncAfter(deadline: .now() + 0.1) {
shouldPresentSheet.toggle()
}
}, label: {
Text("New Tapas")
.font(.system(size: 17))
.padding(.trailing)
.padding([.top, .bottom], 10)
})
.sheet(isPresented: $shouldPresentSheet) {
print("Sheet dismissed!")
} content: {
EditTapasView(tapas: newTapas)
}
Но теперь я добавил новую ссылку NavigationLink внутри EditTapasView, чтобы внести некоторые изменения, и эта часть не работает на листе.
Когда Я просто использую NavigationLink и добавляю к нему функцию addTapas(), она постоянно создает новые тапы без каких-либо щелчков мышью.

Код: Выделить всё

NavigationLink(destination: EditTapasView(tapas: addTapas())) {
Text("New Tapas")
.font(.system(size: 17))
.padding(.trailing)
.padding([.top, .bottom], 10)
}
Затем я исследовал, как программно перемещаться, но не смог заставить это работать.

Код: Выделить всё

NavigationStack (path: $path) {
Button(action: {
newTapas = addTapas()
path = EditTapasView(tapas: newTapas)
}, label: {
Text("New Tapas")
.font(.system(size: 17))
.padding(.trailing)
.padding([.top, .bottom], 10)
})
}
Итак, есть ли способ решить мою проблему? Либо просто использовать NavigationLink (или аналогичный) в части действия кнопки? Или чтобы при нажатии NavigationLink выполнялась какая-то логика?

Подробнее здесь: https://stackoverflow.com/questions/792 ... new-object

Вернуться в «IOS»