티스토리 뷰

반응형

 

Xcode 13 Beta 5에서 navigationBarItems를 쓰려니..

꽤 오래 버텼군..잘가라-

future version에서 deprecate된다고 하는데, future version은 15다 ㅎㅎ..

대신 toolbar를 사용하라고..

 

# toolbar를 사용하여 NavigationItem만들기

NavigationView {
    VStack {}
    .toolbar {
        ToolbarItem(placement: .navigationBarLeading) { ✅
            Button(action: {
                //
            }, label: {
                Text("버튼")
            })
        }
    }
}

요렇게 만들면 된다.

(참고로 ToolbarItem은 iOS 14부터 사용이 가능하다)

placement에는 

navigationBarLeading, navigationBarTrailing, bottomBar등등이 들어간다. 

NavigationView {
    VStack {}
    .toolbar {
        ToolbarItem(placement: .navigationBarLeading) {
            Button(action: {
                //
            }, label: {
                Text("Leading")
            })
        }
        
        ToolbarItem(placement: .navigationBarTrailing) {
            Button(action: {
                //
            }, label: {
                Text("Trailing")
            })
        }
    }
}

Leading과 Trailing을 넣은 모습. 

개인적으로 navigationBarItems보다 훨씬 직관적이고 가독성이 좋아보인다.

NavigationView {
    VStack {}
    .toolbar {
        ToolbarItem(placement: .navigationBarLeading) {
            Button(action: {
                //
            }, label: {
                Text("Leading")
            })
        }
        
        ToolbarItem(placement: .navigationBarLeading) {
            Button(action: {
                //
            }, label: {
                Text("Leading2")
            })
        }
        
        ToolbarItem(placement: .navigationBarTrailing) {
            Button(action: {
                //
            }, label: {
                Text("Trailing")
            })
        }
        
        ToolbarItem(placement: .navigationBarTrailing) {
            Button(action: {
                //
            }, label: {
                Text("Trailing 2")
            })
        }
    }
}

이렇게 똑같은 placement에 2개의 ToolBarItem을 넣으면

이렇게 오른쪽으로 쌓인다.

 

# navigationBarTitle

.navigationBarTitle("타이틀", displayMode: .inline)

이렇게 사용하던 navigationBarTitle 역시 depreacte되었다.

사용법은 주고싶은 title string과 displayMode를 주는 식. 

displayMode에는 automatic, inline, large가 있다. 

 

navigationBarTitle 대신 navigationTitle을 사용하면 된다. 

(navigationTitle은 iOS 14부터 사용 가능)

var body: some View {
    NavigationView {
        VStack {}
        .navigationTitle("안녕")
    }
}

🤷 : displayMode는..? 

var body: some View {
    NavigationView {
        VStack {}
        .navigationTitle("안녕")
        .navigationBarTitleDisplayMode(.inline) ✅
    }
}

navigationBarTitleDisplayMode를 사용하면 된다.

똑같이 automatic, inline, large중 하나를 넣으면 된다. 역시나 iOS 14부터 사용가능. 

저 코드만 넣어줬는데 콘솔에 Layout issue는 덤으로 얻을 수 있다. 

Xcode 13 Beta 5 기준

고치자 애플..잘하자 진짜

 

Navigaiton관련 modifier말고도 deprecate된 것들이 많다.

리스팅해놓은 페이지가 있으니 참고. 

 

반응형