我正在使用TabView制作入职屏幕。
我在此举几个例子。
我有这样的代码tabview:
TabView(selection: $pageIndex) {
ForEach(0..<3) { item in
Text("Test")
.onAppear {
print(item)
}
}
}
.animation(.easeInOut, value: pageIndex)
.tabViewStyle(PageTabViewStyle(indexDisplayMode: .never))
.indexViewStyle(.page(backgroundDisplayMode: .interactive))
当应用程序运行时,控制台打印输出0,但当幻灯片显示在下一个视图时,显示1和2。
出了什么问题?
1条答案
按热度按时间lstz6jyr1#
PageTabViewStyle
是使用滚动视图实现的,它会将页面预加载到滚动视图中以获得平滑的滚动体验,这就是为什么当您只滚动到第1页时,第2页会“出现”的原因:它希望在用户继续滚动经过页面1的情况下准备好。使用
onChange
而不是onAppear
监视pageIndex
中的更改:请注意,
onChange
不会在页面0的初始外观中触发。如果需要,可以在选项卡视图中添加onAppear
: