SwiftUI TabView:如何检测选项卡上的单击?

时间:2020-11-03 01:13:49

标签: swift swiftui tabview swiftui-tabview swiftui-ontapgesture

每次点击选项卡时,我想运行一个函数。

在下面的代码上,当我点击一个新选项卡时(使用onTapGesture),将调用myFunction,但选项卡视图未更改。

struct DetailView: View {
    var model: MyModel
    @State var selectedTab = 1
    
    var body: some View {
        TabView(selection: $selectedTab) {
            Text("Graphs").tabItem{Text("Graphs")}
               .tag(1)
            Text("Days").tabItem{Text("Days")}
               .tag(2)
            Text("Summary").tabItem{Text("Summary")}
               .tag(3)
        }
        .onTapGesture {
            model.myFunction(item: selectedTab)
        }
    }
}

我怎么能同时得到这两种东西:

  • 正常显示的标签视图
  • 我的函数被调用

1 个答案:

答案 0 :(得分:1)

从iOS 14开始,状态变量更改时,您可以使用{subparser1}执行代码。您可以用以下方式替换点击手势:

--arg0

如果您不希望受限于iOS 14,可以在此处找到其他选项:How can I run an action when a state changes?