티스토리 뷰

 

 

 

오늘은 개발 중 발생했던 문제 상황에 대해 어떤 문제가 발생했고 어떻게 해결했는지 포스팅해보고자 한다!

 

📍 발생한 문제

메인 화면 -> 나의 소비내역 -> 내역 상세 보기 후 다시 메인화면으로 돌아왔을 때 나의 소비내역을 아무리 클릭해도 페이지가 이동하지 않는 문제가 있었다.

 

현재 문제가 발생한 버전은 시뮬레이터 iOS 15 17.5 버전이다.

 

 

발생한 문제를 시뮬레이터로 보면 위와 같음

 

 

 

메인 화면으로 돌아왔을 때 클릭해도 아무런 이벤트가 발생하지 않는다...

 

 

 

그래서 코드를 확인해보니까 NavigationLink로 잘 연결시켜주고 있고, 딱히 문제가 되는 부분이 없다!!!!!

 

그래서 테스트를 해봤다.

iOS 17.5 버전에 대해서만 그렇고, 17.4 이하 버전에 대해서 테스트해볼 수 있는 기기들에 한해 다 테스트를 해봤지만 iOS 17.5에서만 

이 현상이 발생되었다.

 

아직도 원인을 잘 모르겠다. 17.5에서만 duplicated되는게 있는 걸까.? 아니면 17.5에서 버그가 생겼던 걸까!!!!

원인을 아신다면 댓글 부탁드려요..

 

 

아무튼 지금은 해결을 했다.

 

🥊  해결방법

.backgound()를 사용하여 background 내부에 NavigationLink를 위치시키는 것이었다!

 

즉 사용자가 "나의 소비내역"이라는 버튼을 클릭했을 때 $navigateToMySpendingList로 선언한 변수가 활성화되게 하였고, background안에 NavigationLink를 배치시켜 나의 소비내역에 해당하는 MySpendingListView를 EmptyView를 할당해 메인화면에서는 MySpendingListView를 숨겨놓은 것이다!

 

.background(
        NavigationLink(destination: AddSpendingHistoryView(spendingHistoryViewModel: spendingHistoryViewModel, clickDate: $clickDate, isPresented: $navigateToAddSpendingHistory, entryPoint: .main), isActive: $navigateToAddSpendingHistory) {
        	EmptyView()
        }

        NavigationLink(destination: MySpendingListView(spendingHistoryViewModel: SpendingHistoryViewModel(), clickDate: $clickDate), isActive: $navigateToMySpendingList) {
            EmptyView()
        }
)

 

즉 위에 코드를 이렇게 배치하였더니 해결이 되었다.

 

이렇게 하면 다른 여러뷰를 거쳤다가 Main뷰로 다시 온 후 MySpendingListView를 다시 이동하려고 해도 전혀 문제가 되지 않는다.

 

 

한 가지 더 발생한 이슈는. background()는 iOS 15.0 이상의 버전에 대해서만 지원해주고 있는데, 우리 프로젝트에서의 iOS 최소 타깃은 14.0 이상부터였다. 

 

근데 지금 문제는 17.5 버전에서만 문제가 발생하고 있기 때문에 딱히 문제가 될 건 없지만, background를 사용할 수 있는 iOS 15.0 버전 이상일 경우에. background 내부에 NavigationLink를 배치시켜주고, 15.0 이하일 경우에는 기존 코드 그대로 NavigationLink를 사용하도록 하는 과정이 필요할 거 같아 아래와 같이 구현해 주었다.

 

 

            .background(
                NavigationLink(destination: AddSpendingHistoryView(spendingHistoryViewModel: spendingHistoryViewModel, clickDate: $clickDate, isPresented: $navigateToAddSpendingHistory, entryPoint: .main), isActive: $navigateToAddSpendingHistory) {
                    EmptyView()
                }

                NavigationLink(destination: MySpendingListView(spendingHistoryViewModel: SpendingHistoryViewModel(), clickDate: $clickDate), isActive: $navigateToMySpendingList) {
                    EmptyView()
                }
            )
            if #available(15.0, *) {
                
            } else {
            //iOS 15.0 이하일 경우
                NavigationLink(destination: AddSpendingHistoryView(spendingHistoryViewModel: spendingHistoryViewModel, clickDate: $clickDate, isPresented: $navigateToAddSpendingHistory, entryPoint: .main), isActive: $navigateToAddSpendingHistory) {
                    EmptyView()
                }

                NavigationLink(destination: MySpendingListView(spendingHistoryViewModel: SpendingHistoryViewModel(), clickDate: $clickDate), isActive: $navigateToMySpendingList) {
                    EmptyView()
                }
            }

 

 

마무리

아직도 왜 17.5 버전에 대해서만 이런 문제가 발생한 건지 원인을 모르겠다 ㅠ...

이 이슈에 대해서 관심 있으신 분들이라면 아래 깃헙에서 코드를 보고 문제원인을 알려주세요..

 

 

pennyway-client-ios/pennyway-client-iOS/pennyway-client-iOS/View/TabView/SpendingManagementView/SpendingManagementMainView/Spend

🪙 Pennyway iOS Mobile Client. Contribute to CollaBu/pennyway-client-ios development by creating an account on GitHub.

github.com

 

아무튼 오늘도 이렇게 버그픽스를 해결했다는 것에 의의를 두자!!!

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함