Я следую учебному пособию Взаимодействие с UIKit с веб-сайта SwiftUI , и я внедряю собственный PageViewController
в свое приложение.На данный момент он использует тот же код, что и учебник.
Проблема в том, что один из controllers
, который я передаю внутрь PageViewController
, имеет Button
, который изменяет State
контейнер.
Это Container
@State private var counter: Int
@State private var currentPage: Int = 0
var body: some View {
VStack {
PageViewController(
controllers: [UIHostingController(rootView: Page(counter: self.$counter))],
currentPage: self.$currentPage
)
}
}
, а Page
похоже на
struct Page: some View {
@Binding counter: Int
var body: some View {
Button(
action: {
self.counter +=1
}
){
Text("Increase counter")
}
Text("Value: \(self.counter)")
}
}
Всякий раз, когда я нажимаю Button
, счетчик увеличивается,State
обновляется, и updateUIViewController
внутри структуры PageViewController
запускается.
Обновление делает это
func updateUIViewController(_ pageViewController: UIPageViewController, context: Context) {
pageViewController.setViewControllers([sItemsControllers[self.currentPage]], direction: .forward, animated: true)
}
Так что каждый раз, когда updateUIViewController
срабатывает,PageViewController
обновляется, и появляется следующая страница.
Любые предложения о том, как я могу предотвратить это?