iPad에서 NavigationLink의 이상한 동작

Sep 08 2020

내 앱에는 NavigationView에 포함 된 NavigationLinks가 포함 된 Scrollview가 있습니다. iPad에서 NavigationLinks를 누르면 이상한 일이 발생합니다. 항목 중 하나를 처음 누르면 완벽하게 작동하며 세부 정보보기가 표시됩니다. 이후에 다른 항목을 누르면 아무 작업도 수행되지 않거나 이전에 누른 항목의 세부 정보보기가 표시됩니다. 때로는 연속 된 몇 가지 항목에 대해 작동하지만 다시 멈 춥니 다.

탐색 스택에 문제가있는 것 같습니까?

이 간단한 예제는 iOS 13.7을 실행하는 11 "iPad pro의 오류를 보여줍니다.

struct ContentView: View {
    var body: some View {
        NavigationView {
            ScrollView {
                ForEach(0..<20) { index in
                    NavigationLink(destination: Text("\(index)")) {
                        Text("\(index)")
                            .padding()
                            .frame(width: 100, height: 100)
                            .background(Color.green)
                    }
                }
            }
        }
    }
}

답변

Asperi Sep 08 2020 at 23:00

예, 버그처럼 보입니다. Apple에 피드백을 제출할 수 있습니다.

한편, 가능한 해결 방법은 다음과 같습니다. Xcode 11.7 / iOS 13.7로 테스트 됨

struct ContentView: View {
    @State private var selection = -1
    @State private var isActive = false

    var body: some View {
        NavigationView {
            ScrollView {
                ForEach(0..<20) { index in
                    Button(action: {
                        self.selection = index
                        self.isActive = true
                    } ) {
                        Text("\(index)")
                            .padding()
                            .frame(width: 100, height: 100)
                            .background(Color.green)
                    }
                }
            }
            .background(NavigationLink(destination: Text("\(selection)"),
                isActive: $isActive) { EmptyView() })
        }
    }
}