我正在关注Interfacing with UIKit tutorial from the SwiftUI website,并且正在我的应用程序中实现自己的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
都会更新,并显示下一页。
关于如何预防的任何建议?