J'essaie de construire un TabbedView
avec le code simple suivant:
TabbedView {
Text("Hello world")
.tabItemLabel(Text("Hello"))
Text("Foo bar")
.tabItemLabel(Text("Foo"))
}
Lors de l'exécution, les deux onglets sont visibles et activés mais le contenu du deuxième onglet ("Foo") est vide.
Essayez d'ajouter des balises:
TabbedView {
Text("Hello world")
.tabItem { Text("Hello") }
.tag(0)
Text("Foo bar")
.tabItem { Text("Foo") }
.tag(1)
}
Dans la dernière version, vous devez utiliser TabView
:
TabView {
AnyView()
.tabItem {
Text("Label 1")
}
AnyView()
.tabItem {
Text("Label 2")
}
}
J'ai pu résoudre ce problème en ajoutant une variable d'état selection
et en la transmettant à la sélection:
struct ContentView : View {
@State private var selection = 1
var body: some View {
TabbedView(selection: $selection) {
Text("Tab 1!").tabItemLabel(
Text("Tab 1")).tag(1)
Text("Tab 2!").tabItemLabel(Text("Tab 2")).tag(2)
}
}
}
Maintenant, en appuyant sur "Tab 2" affichera "Tab 2!" sur l'écran, par opposition à un écran vierge.
Cela utilisait Xcode 11.0 beta 2 (11M337n), macOS Catalina 10.15 Beta (19A487l).
Dans Xcode GM, TabbedView a été renommé TabView . Voici donc la bonne façon de créer une barre d'onglets dans SwiftUI maintenant:
TabView {
Text("Hello world")
.tabItem { Text("Hello") }
.tag(0)
Text("Foo bar")
.tabItem { Text("Foo") }
.tag(1)
}
// Essayez de cette façon, mais vous ne pouvez pas utiliser une icône de SF Symbols, utilisez les icônes de //icons8.com ou d'une autre plate-forme. ou regardez ce tutoriel https://www.youtube.com/watch?v=3PfCU5h5z94
struct ContentView : View {
var body : some View {
TabbedView {
Living_R()
.tabItemLabel(VStack {
Image("home")
Text("Home")
}).tag(0)
ContentView()
.tabItemLabel(VStack {
Image("search")
Text("Search")
}).tag(1)
Text("Info")
.tabItemLabel(VStack {
Image("page")
Text("Doc")
}).tag(2)
}
}
}
// Essayez de cette façon, mais vous ne pouvez pas utiliser une icône de SF Symbols, utilisez les icônes de //icons8.com struct ContentView: View {
var corps: certains Voir {
TabbedView {Living_R ()
.tabItemLabel(VStack {
Image("home")
Text("Home")
}).tag(0)
ContentView()
.tabItemLabel(VStack {
Image("search")
Text("Search")
}).tag(1)
Text("Info")
.tabItemLabel(VStack {
Image("page")
Text("Doc")
}).tag(2)
}
}
}