swiftui - LazyVGrid onTapGesture 导航到下一个屏幕 swiftUI

标签 swiftui swiftui-navigationlink

我对 swiftUI 还很陌生。我创建了一个 GridView ,点击后我想进入下一个屏幕。但不知怎的,我无法设法推到下一个屏幕。我这样做是这样的:

    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")
    }
    
}

这样做后,我收到一条警告

Result of 'NavigationLink<Label, Destination>' initializer is unused

有人可以指导我如何做到这一点吗?

最佳答案

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


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

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

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

关于swiftui - LazyVGrid onTapGesture 导航到下一个屏幕 swiftUI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66488242/

相关文章:

ios - 每次从 SwiftUI 中的详细 View 返回时,如何阻止 View 刷新?

SwiftUI:如何横向呈现 FullScreenCover

SwiftUI:NavigationBarItem 前导不显示

ios - 可以从托管 SwiftUI View 调用 UIKit UIViewController 中的闭包吗?

ios - 如何在 SwiftUI (iOS) 中处理数据删除而不导致应用程序崩溃

ios - 没有标签的 SwiftUI Picker View

ios - Textfield tap 正在关闭 SwiftUI 中的导航链接

swift - 如何在 SwiftUI 中观察数组的单个元素

没有文本内容的 SwiftUI 按钮操作

SwiftUI - NavigationLink 返回上一个 View