如何在 SwiftUI 中列出一组 TabView 项目?
How to list an array of TabView items in SwiftUI?
I have a project where parts of ContentView
is supposed to change when different tabs are selected.我有以下结构和 TabView 项目的数组:
struct TabItem: Identifiable {
var id = UUID()
var title: Text
var image: Image
var tag: Int
}
let tabData = [
TabItem(title: Text("Tab 1"), image: Image(systemName: "1"), tag: 1),
TabItem(title: Text("Tab 2"), image: Image(systemName: "2"), tag: 2),
TabItem(title: Text("Tab 3"), image: Image(systemName: "3"), tag: 3),
TabItem(title: Text("Tab 4"), image: Image(systemName: "4"), tag: 4)
]
我想在 TabView
中列出这些内容,但不知道该怎么做。尝试了以下方法,但到目前为止没有运气。
TabView {
ContentView()
.tabItem {
// code goes here...
}.tag // tag goes here
}
我知道我也可以将 TabView(selection: )
与 @State
变量一起使用,但我也不确定如何实现它。
谢谢!
TabView 可以显示如下(属性 selectedTab
跟踪用户选择的选项卡):
import SwiftUI
struct ContentView: View {
let tabData = [
TabItem(title: Text("Tab 1"), image: Image(systemName: "1"), tag: 1),
TabItem(title: Text("Tab 2"), image: Image(systemName: "2"), tag: 2),
TabItem(title: Text("Tab 3"), image: Image(systemName: "3"), tag: 3),
TabItem(title: Text("Tab 4"), image: Image(systemName: "4"), tag: 4)
]
@State private var selectedTab = 0
var body: some View {
TabView(selection: $selectedTab) {
ForEach(tabData) { tabItem in
Text("Screen: \(tabItem.tag)")
.tabItem {
tabItem.title
tabItem.image
}.tag(tabItem.tag)
}
}
}
}
struct TabItem: Identifiable {
var id = UUID()
var title: Text
var image: Image
var tag: Int
}
I have a project where parts of ContentView
is supposed to change when different tabs are selected.我有以下结构和 TabView 项目的数组:
struct TabItem: Identifiable {
var id = UUID()
var title: Text
var image: Image
var tag: Int
}
let tabData = [
TabItem(title: Text("Tab 1"), image: Image(systemName: "1"), tag: 1),
TabItem(title: Text("Tab 2"), image: Image(systemName: "2"), tag: 2),
TabItem(title: Text("Tab 3"), image: Image(systemName: "3"), tag: 3),
TabItem(title: Text("Tab 4"), image: Image(systemName: "4"), tag: 4)
]
我想在 TabView
中列出这些内容,但不知道该怎么做。尝试了以下方法,但到目前为止没有运气。
TabView {
ContentView()
.tabItem {
// code goes here...
}.tag // tag goes here
}
我知道我也可以将 TabView(selection: )
与 @State
变量一起使用,但我也不确定如何实现它。
谢谢!
TabView 可以显示如下(属性 selectedTab
跟踪用户选择的选项卡):
import SwiftUI
struct ContentView: View {
let tabData = [
TabItem(title: Text("Tab 1"), image: Image(systemName: "1"), tag: 1),
TabItem(title: Text("Tab 2"), image: Image(systemName: "2"), tag: 2),
TabItem(title: Text("Tab 3"), image: Image(systemName: "3"), tag: 3),
TabItem(title: Text("Tab 4"), image: Image(systemName: "4"), tag: 4)
]
@State private var selectedTab = 0
var body: some View {
TabView(selection: $selectedTab) {
ForEach(tabData) { tabItem in
Text("Screen: \(tabItem.tag)")
.tabItem {
tabItem.title
tabItem.image
}.tag(tabItem.tag)
}
}
}
}
struct TabItem: Identifiable {
var id = UUID()
var title: Text
var image: Image
var tag: Int
}