>source

행이 선택 될 때마다 시스템은 임의 인덱스를 다음 뷰로 전달하기로 결정합니다.

자세한 내용은 다음 비디오를 참조하십시오.

다음은 코드입니다.

struct TestView: View {
    let columns = [
        GridItem(.flexible())
    ]
    @State var showDetail = false
    var body: some View {
        ScrollView {
            LazyVGrid(columns: columns, spacing: 20) {
                ForEach(1...10, id: \.self) { index in
                    Text("\(index)")
                        .background(NavigationLink(destination: TestDetail(index: index), isActive: $showDetail) {
                            EmptyView()
                        }).onTapGesture {
                            showDetail = true
                        }
                }
            }
        }
    }
}
struct TestView_Previews: PreviewProvider {
    static var previews: some View {
        TestView()
    }
}
struct TestDetail: View {
    var index: Int
    var body: some View {
        Text("\(index)")
    }
}


  • 답변 # 1

    모든 링크를 한 번에 활성화합니다 (모두 하나의 상태에 의존하기 때문). 대신 우리는 다른 NavigationLink 그러한 경우 생성자.

    다음은 고정 된 변형입니다. Xcode 12.1/iOS 14.1로 테스트 됨

    struct TestView: View {
        let columns = [
            GridItem(.flexible())
        ]
        @State var selectedItem: Int?
        var body: some View {
            ScrollView {
                LazyVGrid(columns: columns, spacing: 20) {
                    ForEach(1...10, id: \.self) { index in
                        Text("\(index)")
                            .background(NavigationLink(destination: TestDetail(index: index), tag: index, selection: $selectedItem) {
                                EmptyView()
                            }).onTapGesture {
                                selectedItem = index
                            }
                    }
                }
            }
        }
    }
    
    

  • 이전 c++ - 함수 내부 배열 초기화
  • 다음 범위를 사용하여 파이썬에서 목록을 어떻게 분할합니까?