Как перемещаться в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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