SwiftUI 中的自定义 TabView 导航
Custom TabView navigation in SwiftUI
我正在尝试为我的应用程序创建自定义 TabView。我已经遵循了一个教程,但是我无法根据按下的按钮来改变视图。我的代码在下面,用于显示在我的 TabView 上的按钮。当按下这个按钮时,我希望显示 HomeView,当按下帐户按钮时,我希望显示 AccountView etyc 等
我想知道如何解决这个问题。我曾尝试使用 NavLinks 但没有成功,因为我无法使用动画。
我是 SwiftUI 的新手,正在努力学习。
谢谢
Button{
withAnimation{
index = 0
}
}
label: {
HStack(spacing: 8){
Image(systemName: "house.fill")
.foregroundColor(index == 0 ? .white : Color.black.opacity(0.35))
.padding(10)
.background(index == 0 ? Color("BrightGreen") : Color.clear)
.cornerRadius(8)
Text(index == 0 ? "Home" : "")
.foregroundColor(.black)
}
}
您可以使用@State 变量来决定应该向用户显示哪个视图。然后根据点击的按钮设置此变量的值。我已经编写了非常简单的代码来展示这个想法。
// Views to show
struct HomeView: View {
var body: some View {
Text("Home View")
}
}
struct AccountView: View {
var body: some View {
Text("Account View")
}
}
// Enum containing views available in tabbar
enum ViewToDisplay {
case home
case account
}
struct ContentView: View {
@State var currentView: ViewToDisplay = .home
var body: some View {
VStack {
switch currentView{
case .home:
HomeView()
case .account:
AccountView()
}
Spacer()
// Tabbar buttons
HStack {
Button(action: { currentView = .home }) { Text("Home") }
Button(action: { currentView = .account }) { Text("Account") }
}
}
}
}
它是这样工作的:
我正在尝试为我的应用程序创建自定义 TabView。我已经遵循了一个教程,但是我无法根据按下的按钮来改变视图。我的代码在下面,用于显示在我的 TabView 上的按钮。当按下这个按钮时,我希望显示 HomeView,当按下帐户按钮时,我希望显示 AccountView etyc 等
我想知道如何解决这个问题。我曾尝试使用 NavLinks 但没有成功,因为我无法使用动画。
我是 SwiftUI 的新手,正在努力学习。
谢谢
Button{
withAnimation{
index = 0
}
}
label: {
HStack(spacing: 8){
Image(systemName: "house.fill")
.foregroundColor(index == 0 ? .white : Color.black.opacity(0.35))
.padding(10)
.background(index == 0 ? Color("BrightGreen") : Color.clear)
.cornerRadius(8)
Text(index == 0 ? "Home" : "")
.foregroundColor(.black)
}
}
您可以使用@State 变量来决定应该向用户显示哪个视图。然后根据点击的按钮设置此变量的值。我已经编写了非常简单的代码来展示这个想法。
// Views to show
struct HomeView: View {
var body: some View {
Text("Home View")
}
}
struct AccountView: View {
var body: some View {
Text("Account View")
}
}
// Enum containing views available in tabbar
enum ViewToDisplay {
case home
case account
}
struct ContentView: View {
@State var currentView: ViewToDisplay = .home
var body: some View {
VStack {
switch currentView{
case .home:
HomeView()
case .account:
AccountView()
}
Spacer()
// Tabbar buttons
HStack {
Button(action: { currentView = .home }) { Text("Home") }
Button(action: { currentView = .account }) { Text("Account") }
}
}
}
}
它是这样工作的: