使用 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 中得到这个。