我有一个带标签项目的标签视图。
ObservableObject
我有一个@Published selectedTab
,它有一个class TabController: ObservableObject {
@Published var selectedTab = 3
func changeTab(tabIndex: Int) {
self.selectedTab = tabIndex
print(selectedTab)
}
}
变量和一个更改它的函数。
当我调用该函数时,它会正确打印我要切换到的选项卡的索引,但是该选项卡不会切换。有人知道为什么吗?
changeTab(tabIndex:)
我还尝试过直接更改selectedTab
而不是struct DetailsView: View {
@ObservedObject var tabController = TabController()
var body: some View {
ScrollView {
VStack(alignment: .leading, spacing: 0) {
Button(action: {self.tabController.changeTab(tabIndex: 2)}) {
HStack {
Image(systemName: "bubble.left.fill")
.buttonIconModifier()
Text("Switch Tab")
}
}.modifier(ButtonStyle())
}
}
}
}
。
编辑:我这样调用changeTab(tabIndex:):
twilio api:verify:v2:services:verifications:create \
--service-sid VAXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX \
--rate-limits "{\"phone_number\": \"1234567890\"}" \
--to to \
--channel channel
答案 0 :(得分:1)
这是一个错误
struct ContentView: View {
@ObservedObject var tabController = TabController() // << 1st controller
和
struct DetailsView: View {
@ObservedObject var tabController = TabController() // << 2nd controller
您的视图使用不同的实例-DetailsView
更改为第二,但是ContentView
监听第一。
他们需要使用一个实例。我问他们它们之间的关系,因为解决方法是将tabController 从一个传递到另一个,或者通过EnvironmentObject
share 。 >