首页 > 解决方案 > 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()) {}
            
        }

标签: swiftuiswiftui-navigationview

解决方案


您可以按照@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
            }
        }
        }
    }
}

推荐阅读