swiftui - Swiftui NavigationLink 未执行
问题描述
我正在尝试在 LazyVGrid 中使用 NavigationLink,但我在导航方面遇到了一些麻烦。我希望在单击颜色时可以继续到下一页。这是一些代码:
这是起始页的外观
以下是图像卡的设置方式:
ZStack{
Color(colorData.image)
.cornerRadius(15)
.aspectRatio(contentMode: .fit)
.padding(8)
.matchedGeometryEffect(id: colorData.image, in: animation)
}
下面是 LazyVgrid 的设置方式:
ScrollView(.vertical, showsIndicators: false, content: {
VStack{
LazyVGrid(columns: Array(repeating: GridItem(.flexible(),spacing: 15), count: 2),spacing: 15){
ForEach(bags){color in
ColorView(colorData: color,animation: animation)
.onTapGesture {
withAnimation(.easeIn){
print("pressed")
selectedColor = color
}
}
}
}
.padding()
.padding(.top,10)
}
})
}
这是我的导航方式:
if selectedColor != nil {
NavigationLink(destination: DetailView()) {}
}
解决方案
您可以按照@workingdog 的回答中所述进行操作,或者像这样稍微修改代码:
struct ContentView: View {
@State var isActive: Bool = false
@State var selectedColor: Color?
var body: some View {
NavigationView {
NavigationLink(destination: DetailsVieww(selectedColor: selectedColor), isActive: $isActive) {
EmptyView()
}
VStack {
ColorView(colorData: color, animation: animation)
.onTapGesture {
selectedColor = color
isActive = true
}
}
}
}
}
推荐阅读
- azure - 从通过 Facebook 验证的 MVC 站点调用 Web API
- c# - 如何绕过或解决此委托事件问题?
- video-capture - 带有材质后期处理的虚幻立体捕捉
- javascript - 有没有办法在它们发生之前或之后捕获 console.log 调用参数?
- python - 在 subprocess.popen 之后执行下一行代码
- kubernetes - 使用 Terraform 管理 GKE 及其部署
- java - Grails 无法解决依赖关系
- node.js - 如何优化 AWS s3 使用以处理“请降低您的请求率”问题
- xpages - 通过自定义控件传递 xp:link 参数
- c++ - c ++使用ncurses库为cin禁用回声