SwiftUI/SwiftUI Study

[SwiftUI] TabView 연습과 오류?

hyunjuntyler 2023. 4. 11. 21:35

이것에 대한 고민이 많았어서 이렇게 글을 남긴다. 나는 탭뷰를 연습해보고 있었다.

import SwiftUI


struct ContentView: View {
    
    var body: some View {
        VStack{
            TabView{
                FirstPage()
                Text("2")
                Text("3")
                Text("4")

            }
            .tabViewStyle(.page)
            .indexViewStyle(.page(backgroundDisplayMode: .always))
        }
    }
}

위와 같이 PageView같이 형성된다. 나는 여기에 앞뒤로 가는 버튼을 추가해서 좀더 직관적으로 만들고 싶었다. 그래서 추가해봤다.

import SwiftUI


struct ContentView: View {
    
    @State private var page = 0
    
    var body: some View {
        VStack{
            TabView(selection: $page){
                Text("1").tag(0)
                Text("2").tag(1)
                Text("3").tag(2)
            }
            .tabViewStyle(.page)
            .indexViewStyle(.page(backgroundDisplayMode: .always))
            
            HStack{
                Button("<"){
                    if page > 0 {
                        withAnimation { page -= 1 }
                    }
                }
                .font(.largeTitle)
                
                Spacer().frame(width: 300)
                
                Button(">") {
                    if page < 2 {
                        withAnimation { page += 1 }
                    }
                }
                .font(.largeTitle)
            }
        }
    }
}

아래와 같이 버튼이 추가됐다!! 하지만 뭔가 버튼이 저 page index (동그라미들) 위에 위치시키고 싶어서 HStack을 ZStack으로 대체해봤다. 이렇게 화면을 바꾸어 보았다!! 문제는... 아이패드로 플레이그라운드를 실행했을 때 문제가 생겼다!!

많은 해결과정을 거쳤으나 생략하고 결론은 앱을 여러군데에서 열면서 Crash가 생긴 것 같다! 사실 SafeArea문제인줄 알았지만 아닌 것 같다..