struct ContentView : View {
var body: some View {
NavigationView {
TabbedView {
PasswordGenerator()
.tabItemLabel {
Image("KeyGlyph")
Text("Generator")
}
PasswordGeneratorSettings()
.tabItemLabel {
Image("SettingsGlyph")
Text("Settings")
}
}
}
}
}
这不会编译,但在 WWDC 的 Swift Essentials 视频中使用了它(见第 54:30 分钟)并且我看到了一些变通方法,例如 VStack 变通方法(但即使它有很多缺陷,左侧选项卡也是如此离左边太远,右边的标签离右边太远,当切换标签时,只有第一个最初加载的标签,另一个标签保持空白,使用标签没有帮助)。那么我如何拥有两个加载 View 并具有图像和文本的选项卡呢?
最佳答案
对于 XCode beta 3,以下应该可以工作:
import SwiftUI
struct Home : View {
@State private var currentTab = 1
var body: some View {
TabbedView(selection: $currentTab) {
FirstView()
.tabItem {
VStack {
Image(systemName: "1.circle")
Text("First Tab")
}
}.tag(1)
SecondView()
.tabItem {
VStack {
Image(systemName: "2.circle")
Text("Second Tab")
}
}.tag(2)
}
}
}
不过,在 VStack
中包含选项卡标签似乎是可选的。因此,您可能决定放弃它,例如:
import SwiftUI
struct Home : View {
@State private var currentTab = 1
var body: some View {
TabbedView(selection: $currentTab) {
FirstView()
.tabItem {
Image(systemName: "1.circle")
Text("First Tab")
}.tag(1)
SecondView()
.tabItem {
Image(systemName: "2.circle")
Text("Second Tab")
}.tag(2)
}
}
}
关于ios - 如何在 SwiftUI 中使用 TabbedView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56748132/