从SwiftUI的TabView模态呈现视图

时间:2020-04-11 20:37:49

标签: swift xcode swiftui

我想以模式方式在选项卡栏中显示其中一个视图。 与点击+按钮时Instagram的操作类似。

示例代码:

    TabView {
            Text("List")
                .tabItem {
                    Image(systemName: "list.bullet")
                    Text("List")
                }
            Text("Add") // I would like this view to be presented modally
                .tabItem {
                    Image(systemName: "plus.app.fill")
                    Text("Add")
                }
        }

我正在寻找使用TabView中的SwiftUI的本地方法。 我知道我可以编写自己的TabBar,但是我想看看是否有人知道如何使用TabView

中的build来做到这一点。

谢谢

1 个答案:

答案 0 :(得分:1)

TabView提供了一个名为selection的可选参数,该参数使您可以定义与包含当前选定选项卡的变量的绑定。您使用某种类型表示视图,为TabView提供对该类型的绑定,然后使用该类型的值标记每个选项卡的视图。您可以根据需要使用Int,但是由于我希望更明确一些,因此我使用了一个枚举:

struct ContentView: View {
    enum Tab {
        case list, add
    }

    @State private var selectedTab: Tab = .list

    var body: some View {
        TabView(selection: $selectedTab) {
            VStack {
                Text("List")
                Button(action: {
                    self.selectedTab = .add
                }, label: {
                    Text("Switch to Add tab")
                })
            }
                .tabItem {
                    Image(systemName: "list.bullet")
                    Text("List")
                }
                .tag(Tab.list)
            Text("Add") // I would like this view to be presented modally
                .tabItem {
                    Image(systemName: "plus.app.fill")
                    Text("Add")
                }
                .tag(Tab.add)
        }
    }
}