기존의 API

New API

NavigationStack

NavigationStack(path: $path) {
		NavigationLink("Details, value: value")
}

path : 스택에 푸쉬된 모든 값을 나타내는 Collection 타입

NavigationLink : 경로에 값을 추가함

@MainActor
struct NavigationStack<Data, Root> where Root : View
NavigationStack {
    List(parks) { park in
        NavigationLink(park.name, value: park)
    }
    .navigationDestination(for: Park.self) { park in
        ParkDetails(park: park)
    }
}

List 가 rootView 역할을 하며, ParkDetails 뷰가 스택에 추가되는 식의 흐름

→ 스택이 비어있으면 pop이 비활성화됨

@State private var presentedParks: [Park] = []

NavigationStack(path: $presentedParks) {
    List(parks) { park in
        NavigationLink(park.name, value: park)
    }
    .navigationDestination(for: Park.self) { park in
        ParkDetails(park: park)
    }
}

→ 기본적으로 NavigationStack은 스택의 뷰를 추적하기 위해 state를 관리하지만, 별도의 코드로 사용자가 만든 데이터 값 컬렉션에 대한 바인딩으로 스택을 초기화하여 상태 제어를 공유할 수 있음

NavigationSplitView

struct NavigationSplitView<Sidebar, Content, Detail> where Sidebar : View, Content : View, Detail : View