#swiftui #swiftui-navigationlink #swiftui-environment
Вопрос:
Я создаю часть авторизации приложения (страницы входа,регистрации,забытых паролей). поскольку у меня есть функция, которая обрабатывает ошибки, которые я вызываю для всех различных транзакций (вход в систему, выход из системы, регистрация пользователя и т. Д.), И если она поймает эту ошибку, То она установит пользовательское сообщение в переменную в моем viewmodel(environmentObject), которая затем будет наблюдаться представлением на экране, которое соответственно выводит ее на экран.
Проблема в том, что если я получу ошибку на странице входа в систему и скажу «перейти к забытому паролю», то ошибка все равно сохранится в этой переменной viewmodel, и, поскольку она также наблюдается со страницы «Забыли пароль», она отображается на этой странице, даже если она не имеет к этому никакого отношения. (это происходит между всеми экранами, а не только между этими двумя). Исправление, которое я имею в виду, — это сброс переменной каждый раз, когда я перехожу на новую страницу, однако я понятия не имею, как это сделать быстро. Использование SwiftUI
Я попытался использовать блок инициализации и сбросить переменную там, однако инициализация выполняется до инициализации моего объекта среды, поэтому я не могу установить там переменную-член.
Ответ №1:
В итоге я использовал .onAppear(выполнить:{ //сбросить переменную здесь}) на самом высоком экране каждого экрана, и это сработало как заклинание, в качестве альтернативы я мог бы использовать .onDisappear() на старом экране для создания аналогичного эффекта