Обновление SwiftUI PageView со стороны
У меня есть PageStyle TabView, и я хочу обновить текст, который находится за его пределами. Я использовал onAppear, чтобы получить событие смены страницы, и сначала выглядит хорошо, если я прокручиваю вперед, но как только я возвращаюсь назад, некоторые onAppear пропускаются.
Это правильный способ сделать это. Возможно ли это?
struct PageView: View {
@State var title: String = "hello"
var body: some View {
VStack {
Text(self.title)
TabView {
ForEach(0..<100) { i in
Text("\(i)").onAppear {
self.title = ("TITLE = \(i)")
}
}
}
.tabViewStyle(PageTabViewStyle())
}
}
}
1 ответ
Решение
Вы можете сделать это, используя
TabView(selection:
и
tag
модификатор на
Text
элементы, как показано ниже (протестировано с Xcode 12.1 / iOS 14.1)
var body: some View {
VStack {
Text(self.title)
TabView(selection: $title){ // << here !!
ForEach(0..<100) { i in
Text("\(i)")
.tag(String(i)) // << here !!
}
}
.tabViewStyle(PageTabViewStyle())
}
}