雖然列表已經能顯示了,可是咱們還不能經過點擊單個地標來查看地標詳情頁面。SwiftUI教程swift
把 list
嵌入一個 NavigationView
中,並把每一個 row
嵌套在一個 NavigationButton
中來設置到目標 view 的轉場,這樣 list
就具備了導航功能。閉包
6.1 把自動建立地標的 list
嵌入到一個 NavigationView
中。ide
LandmarkList.swiftspa
import SwiftUI struct LandmarkList: View { var body: some View { NavigationView { List(landmarkData) { landmark in LandmarkRow(landmark: landmark) } } } } struct LandmarkList_Previews: PreviewProvider { static var previews: some View { LandmarkList() } }
調用 navigationBarTitle(_:)
方法來設置 list
顯示時導航欄的標題。code
LandmarkList.swiftblog
import SwiftUI struct LandmarkList: View { var body: some View { NavigationView { List(landmarkData) { landmark in LandmarkRow(landmark: landmark) } .navigationBarTitle(Text("Landmarks")) } } } struct LandmarkList_Previews: PreviewProvider { static var previews: some View { LandmarkList() } }
6.3 在 list
的閉包中,把返回的 row
包裝在一個 NavigationButton
中,並把 LandmarkDetail
view 做爲目標。SwiftUI教程教程
LandmarkList.swiftit
import SwiftUI struct LandmarkList: View { var body: some View { NavigationView { List(landmarkData) { landmark in NavigationButton(destination: LandmarkDetail()) { LandmarkRow(landmark: landmark) } } .navigationBarTitle(Text("Landmarks")) } } } struct LandmarkList_Previews: PreviewProvider { static var previews: some View { LandmarkList() } }
6.4 切換到實時模式後能夠直接在預覽中嘗試導航功能。單擊 Live Preview
按鈕,而後點擊地標來訪問詳情頁面。io