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)
您需要将您的内容包装在 中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)
| 归档时间: |
|
| 查看次数: |
241 次 |
| 最近记录: |