Жизненный цикл в SwifUI: запуск кода при выходе из дочернего представления иерархии NavigationView
Благодаря NavigationView в SwiftUI мы извлекаем выгоду из простоты построения кода. Однако не раскрываются, по крайней мере, на этих ранних стадиях отмены. Кроме того, снижение внимания к управлению жизненным циклом представлений затрудняет выяснение того, что и когда вызывать что-либо на основе состояния представления.
Я хотел бы запустить некоторый код, когда пользователь решает вернуться вверх по иерархии NavigationView (т. Е. Нажмите кнопку возврата, предоставленную NavigationView).
Я пробовал onDisappear() {} и другие варианты, но не могу заставить его работать. Вроде как не называется. OnAppear() {} действительно работает, поэтому я в тупике.
Любая помощь будет СУПЕР ЦЕННОЙ!
1 ответ
Я совершенно уверен, что на данном этапе нет метода, который можно было бы переопределить, чтобы поймать "обратное" действие навигационного представления.
Тем не менее, я понял, что могу скрыть кнопку возврата NavigationView и сам добавить настраиваемую, где я могу вызвать код, прежде чем увольнять ребенка.
import SwiftUI
struct SecondView: View {
var body: some View {
Text("Second View")
.navigationBarBackButtonHidden(true)
.navigationBarItems(leading: NavigationViewCustomBack())
}
}
==========================
import SwiftUI
struct NavigationViewCustomBack: View {
var body: some View {
HStack{
Image(systemName: "chevron.left").foregroundColor(.blue).font(Font.title.weight(.medium))
Text("Home").padding(.leading, -5)
}
}
}
struct NavigationViewCustomBack_Previews: PreviewProvider {
static var previews: some View {
NavigationViewCustomBack()
}
}