【问题标题】:SwiftUI onChange() event doesn't work on TabView when swiping滑动时,SwiftUI onChange() 事件在 TabView 上不起作用
【发布时间】:2020-12-10 17:25:26
【问题描述】:

我想在 TabView 的活动选项卡更改时更改文本的值。我尝试使用onChange(of: activeTab, perform: {}) 更改存储文本的状态变量的值,但似乎从未调用过给onChange() 的闭包。

TabView(selection: $activeTab) {
  ForEach(exampleData) {dayMenu in
    DayMenuView(dayMenu: dayMenu)
      .padding([.leading, .bottom, .trailing])
  }
}
.onChange(of: activeTab, perform: { index in
  print(activeTab)
  withAnimation {
    activeDate = dates[1]
  }
})

文本视图

Text(activeDate)

状态变量

let dates = ["Montag", "Dienstag"]
    
@State private var activeTab: Int = 0
@State private var activeDate = "Montag"

【问题讨论】:

    标签: swiftui swiftui-tabview


    【解决方案1】:

    提供的代码不可测试,但我认为这是因为activeTab 未更改,因为标签视图未识别,由于标签,所以尝试

    TabView(selection: $activeTab) {
      ForEach(exampleData.indices, id: \.self) { index in
        DayMenuView(dayMenu: exampleData[index])
          .padding([.leading, .bottom, .trailing])
          .tag(index)
      }
    }
    .onChange(of: activeTab, perform: { index in
    

    【讨论】:

    • 这和答案here 解决了我的问题,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多