我想通過點擊每個螢屏底部共享導航欄中的相應按鈕在螢屏 A、B 和 C 之間導航。如何創建這樣的工具列來實作螢屏之間的這種可互動性?

uj5u.com熱心網友回復:
您將使用 aTabView {...}來完成此操作。您可以有效地在內部實體化您的視圖,TabView然后向每個視圖添加一個專案修飾符。
var body: some View {
TabView {
Text("A")
.tabItem { Text("A") }
Text("B")
.tabItem { Text("B") }
Text("C")
.tabItem { Text("C") }
}
init() {
UITabBar.appearance().backgroundColor = UIColor.red
}
}
此代碼的作用:https : //i.stack.imgur.com/CKBHm.gif
為了更加清晰,您可以將任何您想要的專案添加到 TabView。它基本上充當您添加的視圖的容器。
struct ContentView: View {
var body: some View {
TabView {
FirstView()
.tabItem { Text("A") }
SecondView()
.tabItem { Text("B") }
ThirdView()
.tabItem { Text("C") }
}
}
}
struct FirstView: View {
var body: some View {
Text("A")
}
}
struct SecondView: View {
var body: some View {
Text("B")
}
}
struct ThirdView: View {
var body: some View {
Text("C")
}
}
自定義標簽欄
這是一個非常簡單的案例,我們簡單地VStack{}根據我們創建的列舉換出父級。當它第一次初始化時,這將設定.first頁面,這將是顯示的頁面。每當我們使用位于HStack{}視圖中的按鈕操作更改它時,都會更新。如果您想在選項卡欄中添加除文本或影像之外的更多內容,這將特別有用。您還可以添加selectedPage到 an@EnvironmentObject以從應用程式的任何位置控制這些頁面。這在創建登錄或登錄頁面時特別有用,您需要在其中交換導航堆疊。
struct ContentView: View {
@State var selectedPage: SelectedPage = .first
var body: some View {
VStack {
VStack {
switch selectedPage {
case .first:
FirstView()
case .second:
SecondView()
case .third:
ThirdView()
}
}
Spacer()
HStack {
Button(action: { selectedPage = .first }, label: {
Text("A")
})
Spacer()
Button(action: { selectedPage = .second }, label: {
Text("B")
})
Spacer()
Button(action: { selectedPage = .third }, label: {
Text("C")
})
}.padding(.horizontal, 30)
}
}
}
enum SelectedPage {
case first, second, third
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/367359.html
