Swiftui ObservedObject и UIKit Slide - PullRequest
0 голосов
/ 19 марта 2020

У меня проблема со слайдером (копия из документации Apple https://developer.apple.com/tutorials/swiftui/interfacing-with-uikit). Когда откройте лист и передайте ObservedObject к нему и вызовите функцию для результата обновления onAppear, слайд еще не работал, если я прокомментирую функцию self.networkManagerNewsWags.getNewsByWagsId (wagsId: 1), слайд работает нормально

PAGE : 1

struct TestView: View {

    @ObservedObject var networkManagerNewsWags: NetworkManagerNewsWags
    @State var showingDetail = false

    var body: some View {
        VStack {
            Button(action: {
                self.showingDetail.toggle()
            }) {
                Text("Show Detail")
            }.sheet(isPresented: $showingDetail) {
                Test1(["tazlowvvirzokkyudfeoyoxiikcrnvtxwgvptyomojlubczrta_wanda1.jpg", "ulwmgeqaiuexnijpglohbeienrvyrjtxkwkkyalgdhckntthdy_wanda2.jpg"].map { ImageCarouselWagsView(image: $0) }, wags: wagsData[5], networkManagerNewsWags: self.networkManagerNewsWags)
            }
        }
    }
}

СТРАНИЦА ЛИСТА:

struct Test1 <Page: View>: View{

    @ObservedObject var networkManagerNewsWags: NetworkManagerNewsWags
    var viewControllers: [UIHostingController<Page>]
    @State var currentPage = 0
    var wags: Wags


    init(_ views: [Page], wags: Wags, networkManagerNewsWags: NetworkManagerNewsWags) {
        self.viewControllers = views.map { UIHostingController(rootView: $0) }
        self.wags = wags
        self.networkManagerNewsWags = networkManagerNewsWags
    }



    var body: some View {
        ScrollView {
            VStack {
                VStack { //Sdlide with dot, copy from apple
                    PageViewControllerWagsDetail(controllers: self.viewControllers, currentPage: self.$currentPage)
                    PageControlWagsDetail(numberOfPages: viewControllers.count, currentPage: self.$currentPage) //COPY FROM APPLE
                }.frame(height: 500)
                VStack {
                    Text(self.networkManagerNewsWags.testString)
                }

            }
            .onAppear {
                self.networkManagerNewsWags.test()
            }
        }
    }
}

СТРАНИЦА СЕТЕВОГО МЕНЕДЖЕРА:

Фонд импорта

class NetworkManagerNewsWags: ObservableObject {

    @Published var testString = ""

    func test() {
        self.testString = "Hello"
    }
}

Есть идеи?

...