【问题标题】:LazyVGrid onTapGesture navigate to next screen swiftUILazyVGrid onTapGesture 导航到下一个屏幕 swiftUI
【发布时间】:2021-06-03 21:07:22
【问题描述】:

我对 swiftUI 很陌生。我创建了一个网格视图,点击我想进入下一个屏幕。但不知何故,我无法设法推到下一个屏幕。我是这样做的:

    var body: some View {
    NavigationView {
        ScrollView {
            LazyVGrid(columns: gridItems, spacing: 16) {
                ForEach(viewModel.pokemon) { pokemon in
                    PokemonCell(pokemon: pokemon, viewModel: viewModel)
                        .onTapGesture {
                            NavigationLink(destination: PokemonDetailView(pokemon: pokemon)) {
                                Text(pokemon.name)
                            }
                        }
                }
            }
        }
        
        .navigationTitle("Pokedex")
    }
    
}

这样做后,我会收到警告说明

'NavigationLink

谁能指导我,怎么做?

【问题讨论】:

    标签: swiftui swiftui-navigationlink


    【解决方案1】:

    .onTapGesture 添加了当视图识别到点击手势时要执行的操作。在您的情况下,您不需要使用.onTapGesture。如果您想在点击单元格时转到另一个视图,您需要编写NavigationLink,如下所示。


    NavigationLink(destination: PokemonDetailView(pokemon: pokemon)) {
                                  PokemonCell(pokemon: pokemon, viewModel: viewModel)
                                }
    

    如果您想使用.onTapGesture,另一种方法是为您点击的单元格的口袋妖怪创建@State,并使用NavigationLinkisActive 绑定。因此,当用户点击单元格时,它将更改@State 并在.onTapGesture 中切换isActive。您可能需要为此添加另一个堆栈(ZStack 等)。

    NavigationView {
                  ZStack {
                    NavigationLink("", destination: PokemonDetailView(pokemon: pokemon), isActive: $isNavigationActive).hidden()
                    ScrollView {
                                // ...
    

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      • 2020-09-26
      • 2020-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      相关资源
      最近更新 更多