LazyVGrid onTapGesture 导航到下一个屏幕 swiftUI
LazyVGrid onTapGesture navigate to next screen swiftUI
我对 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")
}
}
这样做后,我收到一条警告,指出
Result of 'NavigationLink<Label, Destination>' initializer is unused
谁能指导我,怎么做?
.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 {
// ...
我对 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")
}
}
这样做后,我收到一条警告,指出
Result of 'NavigationLink<Label, Destination>' initializer is unused
谁能指导我,怎么做?
.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 {
// ...