SwiftUI TabView 重复第一个条目

Edw*_*ted 1 tabview swiftui swiftui-tabview

Xcode RC 14.1

在此输入图像描述

第一个选项卡生成两次。第一个有效,第二个则显示空白屏幕。这已在 SO 的其他地方报道过,人们建议删除 Spacer(),但这没有什么区别。

下面的代码有两种变体,一种是标签的枚举,而不是整数,但它们的行为都是相同的。(不知道为什么下面所有的代码没有变成灰色?)

import SwiftUI


struct MenuView: View {
    
    private enum Tab: Hashable {
            case location
            case calculate
            case install
            case results
            case about
    }
    
    //  @State private var tabBarSelected: Tab = .location
    @State private var selectedTab = 0
    
    var body: some View {
        VStack {
            TabView(selection: $selectedTab) {
                LocationView()
                  //  .tag(Tab.location)
                    .tag(0)
                    .tabItem {
                        Text("Location")
                        Image(systemName: "globe.europe.africa")
                    }
                CalculateView()
                  //  .tag(Tab.calculate)
                    .tag(1)
                    .tabItem {
                        Text("Calculate")
                        Image(systemName: "apps.ipad")
                    }
                InstallView()
                    // .tag(Tab.install)
                    .tag(2)
                    .tabItem {
                        Text("Install")
                        Image(systemName: "window.ceiling.closed")
                    }
                ResultsView()
                    .tag(3)
                    // .tag(Tab.results)
                    .tabItem {
                        Text("Results")
                        Image(systemName: "sun.max.fill")
                    }
                AboutView()
                    .tag(4)
                  //  .tag(Tab.about)
                    .tabItem {
                        Text("About")
                        Image(systemName: "gear")
                    }
            } // TabView
            .accentColor(.yellow)                                               //Active tab color
            
        }                                                                       // VStack
    }                                                                           // body
    
    init() {
        UITabBar.appearance().barTintColor = UIColor.systemGray //TabBar color
        UITabBar.appearance().unselectedItemTintColor = UIColor.systemGray2
        UITabBar.appearance().isOpaque = false
    }
    
} 


struct MenuView_Previews: PreviewProvider {
    static var previews: some View {
        MenuView()
    }
}
Run Code Online (Sandbox Code Playgroud)

Jat*_*uva 5

您需要将您的内容包装在 中VStack,请检查您的代码LocationView()

而不是这个:

var body: some View {
    Text("Hi")
    Text("welcome")
}
Run Code Online (Sandbox Code Playgroud)

使用下面的代码:

var body: some View {
    VStack {
        Text("Hi")
        Text("welcome")
    }
}
Run Code Online (Sandbox Code Playgroud)