首页 > 解决方案 > 防止 UIViewControllerRepresentable 更新

问题描述

我正在关注SwiftUI 网站上的 UIKit 接口教程,并且我正在我的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都会更新并显示下一页。

关于如何防止它的任何建议?

标签: swiftuiviewcontrollerswiftui

解决方案


推荐阅读