Модификатор
используется для выполнения действий при появлении представления на экране. По умолчанию замыкание onAppearвызывается каждый раз, когда представление становится видимым. Однако если вы хотите выполнить код только один раз при первом появлении представления, вы можете использовать различные методы. Вот несколько вариантов:
- Флаг состояния: вы можете использовать логическую переменную состояния в качестве флага, чтобы отслеживать, появилось ли представление или нет. Установите для флага значение
trueвнутри замыканияonAppearи используйте операторifдля выполнения желаемого кода только тогда, когда флаг имеет значениеfalse..
@State private var viewAppeared = false
var body: some View {
Text("Content")
.onAppear {
if !viewAppeared {
// Code to execute only once
viewAppeared = true
}
}
}
- Модификатор представления: вы можете создать собственный модификатор представления, который обертывает модификатор
onAppearи обрабатывает выполнение кода только один раз. Модификатор может использовать свойство@Stateдля отслеживания внешнего вида и соответствующего выполнения кода.
Content) ->some View {
content.onAppear {
if !viewAppeared {
// Код, выполняемый только один раз
viewAppeared = true
>
расширение View {
func onAppearOnce(perform action: @escaping () ->Void) ->some View {
self.modifier(OnAppearOnceModifier())
.onAppear (выполнение: действие)
Использование:
Text("Content")
.onAppearOnce {
// Code to execute only once
}
Это всего лишь несколько способов выполнить код только один раз с использованием модификатора onAppearв SwiftUI. Не стесняйтесь выбирать тот, который лучше всего соответствует вашим потребностям.