0

我正在尝试为我的应用创建一个自定义 TabView。我已经按照这个教程进行操作,但是我无法根据按下的按钮来改变视图。下面是我的 TabView 上显示的按钮的代码。按下此按钮时,我希望显示 HomeView 以及按下 Account 按钮以显示 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)
            }
        }
4

1 回答 1

2

您可以使用 @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") }
      }
    }
  }
}

它是这样工作的:

在此处输入图像描述

于 2020-12-09T10:35:48.580 回答