【发布时间】:2021-09-09 01:54:28
【问题描述】:
我有一个显示 4 个不同视图的 TabView。整个tabView设置为:
.tabViewStyle(PageTabViewStyle())
(所以我可以让它启用滑动而不是使用按钮)
我还有一个简单矩形的 HStack,它们在显示各自的页面时应该突出显示不同的颜色。 (当显示第一个选项卡时,第一个矩形将显示为蓝色,当第二个页面处于活动状态时,第二个矩形将显示为蓝色,等等。)我在每个视图上都使用了 onAppear。
ViewOne()
.onAppear {
print("1")
activeTab = 1
}
如果我只在 tabView 中使用两个视图,这可以正常工作。但是一旦我添加了第三个,onAppear 就会变得疯狂。当我滑动到第三个视图时,打印语句会快速连续添加到控制台:
3
1
4
蓝色矩形是第四个。第 4 页更令人讨厌,事情变得很奇怪。
我的问题是:tabViews 是不是有点像 UIKit TableView 的 dequeResuableCell,还是我做错了什么?可能是一个错误?如果是这样,是否有不使用 onAppear 的解决方法?
编辑: 这是完整的代码实现:
VStack {
HStack {
Rectangle()
.foregroundColor((activeTab == 1) ? .blue : .red)
Rectangle()
.foregroundColor((activeTab == 2) ? .blue : .red)
Rectangle()
.foregroundColor((activeTab == 3) ? .blue : .red)
Rectangle()
.foregroundColor((activeTab == 4) ? .blue : .red)
}
.frame(height: 100)
.padding()
TabView(selection: $activeTab) {
// each one of the Views below has the .onAppear attached to them
viewTwo(activeTab: $activeTab)
viewTwo(activeTab: $activeTab)
viewThree(activeTab: $activeTab)
viewFour(activeTab: $activeTab)
}
.tabViewStyle(PageTabViewStyle())
}
}
【问题讨论】:
-
为什么只显示一小部分代码? Carmen Sandiego 和 HStack 到底在哪里?
-
改用
TabView(selection:绑定来跟踪页面变化。 -
El Tomato,我刚刚添加了其余代码来帮助解决我的问题
-
Asperi 我试过了,但代码还是有同样的问题