1

使用 Swift5.3.2、iOS14.4.2、XCode12.4、

我正在为在 SwiftUI 中创建 PageViews 这个新的 iOS14 功能而苦苦挣扎。

一切正常,除了我无法检测到滑动的时刻!

我尝试使用.onChange(selectionIndex),但是一旦我为 TabView 创建了这个更改侦听器selectionIndex,滑动就会停止。它不再光滑。

struct MyView: View {

    @State var selectionIndex = 0

    var body: some View {

        TabView(selection: $selectionIndex) {
            ForEach(mediaList.paths.indices, id: \.self) { index in
               SomePageView(media: mediaList.paths[index])
            }
        }
        .tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
        .onChange(of: selectionIndex) { newIdx in
            
            customDotsService.selectedIndex = newIdx  // because TabView's PageViewStyle does not have little dots that can be placed somewhere else on screen...
            sendCommand(index: newIdx) // some background task to send commands to other services...
        }
    }
}

即使我onChange(selectionIndex) { newIdx in ... }仍然完全是空的,滑动也会停止,内存也会进入循环。

这真的是一个烦人的问题,我从 4 天开始就一直在处理它。

任何帮助高度赞赏。

我需要 Apple 提供的:具有正确生命周期方法的有效 PageView .onAppear().onChange(selectionIndex)以及可以放置在屏幕上任何位置的小点指示符。帮助宇宙,帮助我们在 SwiftUI 中得到这个。

4

0 回答 0