SwiftUI TabViewでTab動的追加
Tab
ForEachに対応するには、
TabContent
Conforms when Data conforms to RandomAccessCollection, ID conforms to Hashable, and Content conforms to TabContent.
DataがRandomAccessCollectionに準拠し、IDがHashableに準拠し、ContentがTabContentに準拠する場合に適合する。
が必要となります。
TabはTabContentに準拠しています。
extension Tab : TabContent where Value : Hashable, Content : View, Label : View {
Code
import SwiftUI
struct TabInfo: Identifiable {
var id: Int
var name : String
}
struct BooksView: View {
@State private var selectTab: Int = 1
@State var booksTabInfo: [TabInfo] = [TabInfo(id: 1, name: "Aaaaa"),
TabInfo(id: 2, name: "Bbbbb"),
TabInfo(id: 3, name: "Ccccc")]
var body: some View {
TabView(selection: self.$selectTab) {
ForEach(self.booksTabInfo, content: { boolTabInfo in
Tab(boolTabInfo.name, systemImage: "calendar", value: boolTabInfo.id) {
Text("\(boolTabInfo.name)")
Button("add Tab") {
let id = self.booksTabInfo.count + 1
self.booksTabInfo.append(TabInfo(id: id, name: "tab-\(id)"))
}
}
})
}
.tabViewStyle(.sidebarAdaptable)
}
}







