12

我正在尝试TabbedView使用以下简单代码构建一个:

TabbedView {
    Text("Hello world")
        .tabItemLabel(Text("Hello"))
    Text("Foo bar")
        .tabItemLabel(Text("Foo"))
}

运行时,两个选项卡都可见并已启用,但第二个选项卡(“Foo”)的内容为空白。

4

5 回答 5

22

尝试添加标签:

    TabbedView {
        Text("Hello world")
            .tabItem { Text("Hello") }
            .tag(0)
        Text("Foo bar")
            .tabItem { Text("Foo") }
            .tag(1)
    }
于 2019-06-06T22:46:35.403 回答
3

我可以通过添加一个selection状态变量并将其传递给选择来解决这个问题:

struct ContentView : View {
    @State private var selection = 1

    var body: some View {
        TabbedView(selection: $selection) {
            Text("Tab 1!").tabItemLabel(
                Text("Tab 1")).tag(1)
            Text("Tab 2!").tabItemLabel(Text("Tab 2")).tag(2)
        }
    }
}

现在,点击“Tab 2”将显示“Tab 2!” 在屏幕上,而不是空白屏幕。

这是使用 Xcode 11.0 beta 2 (11M337n)、macOS Catalina 10.15 Beta (19A487l)。

于 2019-06-28T15:16:32.983 回答
1

在最新版本中,您应该使用TabView

   TabView {
        AnyView()
            .tabItem {
                Text("Label 1")
            }
        AnyView()
            .tabItem {
                Text("Label 2")
            }
    }
于 2019-09-05T09:22:59.480 回答
1

在 Xcode GM 中, TabbedView 被重命名为TabView。所以现在在 SwiftUI 中创建标签栏的正确方法是:

  TabView {
        Text("Hello world")
            .tabItem { Text("Hello") }
            .tag(0)
        Text("Foo bar")
            .tabItem { Text("Foo") }
            .tag(1)
    }
于 2019-10-22T02:51:39.763 回答
0

尝试这种方式,但您不能使用来自 SF Symbols 的图标,而是使用来自 //icons8.com 或其他平台的图标。或观看本教程https://www.youtube.com/watch?v=3PfCU5h5z94

struct ContentView : View {
    var body : some View {
        TabbedView {        
             Living_R()
                 .tabItemLabel(VStack {
                     Image("home")
                     Text("Home")
                 }).tag(0)
                    
             ContentView()
                 .tabItemLabel(VStack {
                     Image("search")
                     Text("Search")
                 }).tag(1)
                
             Text("Info")
                 .tabItemLabel(VStack {
                     Image("page")
                     Text("Doc")
                 }).tag(2)
        }   
    }    
}
于 2019-06-30T10:30:30.233 回答