Запретить UIViewControllerRepresentable от обновления - PullRequest
0 голосов
/ 20 сентября 2019

Я следую учебному пособию Взаимодействие с 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 обновляется, и появляется следующая страница.

Любые предложения о том, как я могу предотвратить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...