본문 바로가기

프로그래밍/iOS

[SwiftUI] 특정 View에서 TabView 가리기

친구 목록에서 프로필 View로 이동 시 하단과 같은 문제가 생겼다.

 

이는 내가 원하는 결과도 아니고 사용성에서도 매우 좋지 않았다.

 

구글링을 해보니

 

TabView {
	NavigationStack {
   
   }
}

 

구조로 되어 있는 코드를 

NavigationStack {
	TabView {
   
   }
}

이런식으로 바꾸면 해결 된다고 한다.

 

하지만 TabView - Navigation 구조를 바꾸면 상상치 못할 버그들이 엄청 많이 나올 것이 뻔하기 때문에 다른 방법을 찾아보기로 했다.

 

special thanks to LetsBe

 

SSAFY 2기 단톡방에서 답을 찾았다. 3년째 내 헛소리를 잘 받아주시는 고마우신 분들이다.

 

결론적으로는 toolbar에서 tabBar를 히든처리 해주면 되는 간단한 문제였다.

NavigationStack {
            List {
                HStack {
                    NavigationLink(destination: ProfileView(profileItem: myData)
                        .navigationBarBackButtonHidden(true)
                        .toolbar{
                            ToolbarItem(placement: .navigationBarLeading) {
                                NavigationBackItem()
                            }
                        }
                        .toolbar(.hidden, for: .tabBar)
                    )
                    
                    // Image, Text View 등등 작성
                }
           }
}

 

해석

.navigationBarBackButtonHidden(true) // 커스텀 뒤로가기 버튼을 위해 순정 버튼은 hidden 처리한다.

// 커스텀 뒤로가기 버튼을 넣어준다. navigatoinBarLeading을 넣어 왼쪽 정렬을 해주었다.
.toolbar{
  ToolbarItem(placement: .navigationBarLeading) {
    NavigationBackItem()
  }
}

// 이 부분이 TabView 의 하단 부분을 지워주는 코드이다.
.toolbar(.hidden, for: .tabBar)