通过@Published变量更改TabView(selection :)

时间:2020-04-06 15:05:18

标签: swift swiftui

我有一个带标签项目的标签视图。

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

1 个答案:

答案 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 。 >