이전 포스팅에서 나는 iOS 15까지 대응하는것이 적절하다고 결론을 지을 수 있었다. SwiftUI를 기준으로, iOS 15부터 현재까지 가장 버전 대응을 해야 하는건 많지만, 가장 눈에 뛰는건 한 가지가 있다고 생각한다. 바로 Navigation이다.
Navigation의 경우 iOS 15까지는 NavigationView, 이후는 NavigationStack을 사용한다.
버전 대응에 있어 가장 골칫덩어리인 이 녀석을 조금 더 쉽게 버전 대응을 할 수 있도록 만들어보자.
struct NavigationWrapper<Content: View>: View {
let content: () -> Content
var body: some View {
if #available(iOS 16.0, *) {
NavigationStack {
content()
}
} else {
NavigationView {
content()
}
}
}
}
// useage
NavigationWrapper {
HomeView()
}
클로저로 뷰를 받아오고 있고, body에 분기처리를 해서 버전대응을 할 수 있을 것이다.