카테고리 없음

SwiftUI: 중복 Navigation 호출 오류

ragdoll-cat 2025. 2. 17. 17:58

🛑 오류 메시지

 

🔍 원인

해당 오류는 한 프레임 내에서 내비게이션 이동이 여러 번 호출될 때 발생한다.

- 동일한 내비게이션 명령이 중복으로 실행됨.

- 버튼이 짧은 시간에 빠르게 여러 번 입력되어 중복된 호출 발생.

🛠 해결 방법

1. 플래그를 활용한 중복 방지

화면 이동 중을 나타내는 변수를 사용하여 중복 호출을 방지하는 방법

@State private var isNavigating: Bool = false

 

 

2. 유예기간 적용

적당한 처리 시간을 주고(예: 0.5초) 연속적인 이벤트를 제한하여 이벤트 중복 수신을 방지하는 방법

debounce throttle을 적용하여 처리할 수도 있다.

 

 

🧐 더 간단한 방법은 없나요..?

NavigationStack을 관리하는 클래스에서 중복된 View일 경우 Push하지 못하도록 처리

func push(_ path: T) {
  guard paths.last != path else { return } // 중복 이동 방지
  paths.append(path)
}