Final Day 19 _ SwiftUI Day 17

라희·2023년 11월 1일
0

내가 겪은 것들

사실 SwiftUI가 전에 배우던 토막지식이였던 것도 모자라서, UIKit이라는 고전도구를 쓰다가, 사실 고전도구라고 하기엔 애매한 레거시 도구다 ,,, 아직도 쓰고 있으니까 그려려니 할 수 있는 수준이니까 그냥 개그 언저리라고 생각하면 아주 좋다. 다시 내 도구라고 SwiftUI로 와서 아주 머리를 골머리를 앓는게 맞는 말인게 지금 이거를 쓰는 기준으로 내가 후술할 문제로 내 소중한 개발 시간중 하루를 통으로 날렸다. 결국 내일이면 탭바랑 다 싸우고 이기겠지만 ,,,

탭바에 뷰가 연결이 안돼!!

뭔 이상한 소리를 하냐고 묻는다면 당신은 위에서 알려준 UIKit를 사용하는 개발자이거나, 아니면 내가 바보짓을 한것임을 바로 안 개발자임이거나 둘 중 하나일 거 같다.

전자는 UIKit로 만든 앱인 경우에는 물론 SnapKit을 쓰는 개발자라면 SwiftUI나 다름이 없겠지만 이건 논외로 치겠다. StoryBoard 상에서 Tab Bar Controller를 꺼내서 만든 다음, 그 Controller에서 Tab Bar Item을 넣고 View Controller에 각기 아이템을 연결하기만 하면 되는 문제라서 뭔 소리를 하는 거냐고 물을 수도 있기 때문이다.

근데 후자는 의미가 달라진다. 나처럼 기본 탭바를 만들어다가 넣는게 아니라 GeometryReader 같은걸로 탭바를 만들면 탭바처럼 기능하게 다른 코드들을 넣어줘야 하는데 내가 이걸 모르고 하나도 안한 탓에 각 뷰가 당연하다는 듯이 씹혔다(!)

그래서 나의 문제는?



차례대로 보면 밑에 탭바는 전환이 이미 완료가 된 상태인데 위에 있는 뷰에선 바뀐점이 단 하나도 없다. 놀라울 정도로 말이다.

결국엔 나 혼자서 TabItem을 건들여보고 다 해보았지만 답이 없었고, 이 문제를 해결하기 위해 질문도 해보고 해본 결과는 다음과 같았다;

init() {
	UITabBar.appearance().isHidden = false
}

// ...
// ...

TabView(selection: $selectedTab) {
	ChatView()
    	.tabItem {
        	Text("chwt")
         }.tag(0)
                
    HomeView()
        .tabItem {
            Text("home")
        }.tag(1)
            
    ProfileView()
        .tabItem {
            Text("Profile")
        }.tag(2)
}

이게 해결한 코드인데, 이 코드 상에서는 서로의 뷰가 서로가 연결되어 있고, 탭바가 그냥 구동되는 느낌인건데 이 과정을 없이 그냥 위에 커스텀 탭바부터 들이박아서 아무것도 못했던 것이였다 ,,, 무려 이거 하나 때문에 잠 자고 일어나서 스트레스 만땅 코딩을 했다 ,,, 어쩄든 저렇게 진행하면 아래와 같이 기본 탭바의 모습이 나온다.

그리고 하나 더 달라진거는 각 뷰가 정상적으로 연계되어 있다는 거다.

이제 다음에 할거는?

아마 내가 만든 커스텀 탭바를 저기에 다시 입히고 원래 하려고 했던 작업을 이어서 할 거 같다. 원래 프로필 뷰가 먼저였으니까 그걸 진행하지 않을까 싶은 느낌이다.

결론

한문장으로 정리가 가능하다. 강의에 너무 의존하지 말자. >> 결국엔 내 실력으로 뭔가 만드는게 중요하다는 이야기다. 물론 실력을 키우기 위해 클론 코딩도 좋지만 뭔가 머리로 이해를 하는게 중요하다는 생각이라는 거다.

profile
달리는 질주가 느려도, 그 걸음이 한없이 느려도, 나아가는 발걸음이라면 반은 간거야 🛶

0개의 댓글