LazyVGrid onTapGesture 导航到下一个屏幕 swiftUI
Posted
技术标签:
【中文标题】LazyVGrid onTapGesture 导航到下一个屏幕 swiftUI【英文标题】:LazyVGrid onTapGesture navigate to next screen 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
谁能指导我,怎么做?
【问题讨论】:
【参考方案1】:.onTapGesture
添加了当视图识别到点击手势时要执行的操作。在您的情况下,您不需要使用.onTapGesture
。如果您想在点击单元格时转到另一个视图,您需要编写NavigationLink
,如下所示。
NavigationLink(destination: PokemonDetailView(pokemon: pokemon))
PokemonCell(pokemon: pokemon, viewModel: viewModel)
如果您想使用.onTapGesture
,另一种方法是为您点击的单元格的口袋妖怪创建@State
,并使用NavigationLink
的isActive
绑定。因此,当用户点击单元格时,它将更改@State
并在.onTapGesture
中切换isActive
。您可能需要为此添加另一个堆栈(ZStack
等)。
NavigationView
ZStack
NavigationLink("", destination: PokemonDetailView(pokemon: pokemon), isActive: $isNavigationActive).hidden()
ScrollView
// ...
【讨论】:
以上是关于LazyVGrid onTapGesture 导航到下一个屏幕 swiftUI的主要内容,如果未能解决你的问题,请参考以下文章
LazyVGrid 中的 NavigationLink 循环返回所有条目,SwiftUI
swiftui+combine:为啥滚动 LazyVGrid 时 isFavoriteO 改变了?