NavigationView視圖是非常重要的視圖,您會一直使用它。

NavigationView {

}

一旦將視圖包裝到NavigationView中,您可以使用navigationTitle()修改器為視圖添加標題:

NavigationView {
    Text("Hello")
        .navigationTitle("Welcome")
}

然而,最重要的好處是現在我們可以使視圖成為導航到其他視圖的鏈接。

首先,我們創建另一個視圖。您可以將它添加到相同的文件中,也可以添加到項目中的另一個文件中:

struct ThanksView: View {
    var body: some View {
        Text("Thanks for checking out the app!")
    }
}

然後,將“Hello” Text視圖包裝到NavigationLink視圖中,其中我們將目的地參數設置為ThanksView

NavigationView {
    NavigationLink(destination: ThanksView()) {
        Text("Hello")
            .navigationTitle("Welcome")
    }
}

現在,許多事情正在自動進行:Hello文本變為藍色並可點擊:

一旦我們點擊它,我們將顯示ThanksView和返回原始視圖的鏈接。左上角按鈕中顯示的文本來自我們設置的navigationTitle修改器:

以下是示例中使用的完整代碼:

import SwiftUI

struct ThanksView: View {
    var body: some View {
        Text("Thanks for checking out the app!")
    }
}

struct ContentView: View {
    var body: some View {
        NavigationView {
            NavigationLink(destination: ThanksView()) {
                Text("Hello")
                    .navigationTitle("Welcome")
            }
        }
    }
}

這是在視圖之間導航的其中一種方式,我會說這是最簡單的方式。

有時,在導航到另一個視圖之前,您希望執行一些操作。在這種情況下,我們可以有一個布爾屬性showThanks,當我們希望ThanksView出現時可以將其設置為true。當用戶點擊按鈕時,我們這樣做:

struct ContentView: View {
    @State private var showThanks = false

    var body: some View {
        NavigationView {
            VStack {
                NavigationLink(destination: ThanksView(), isActive: $showThanks) {}

                Button("Hello") {
                    showThanks = true
                }
                .navigationTitle("Welcome")
            }
        }
    }
}

應用程序的外觀與之前完全相同,但是現在當用戶點擊按鈕時,我們可以做些什麼,例如記錄過渡或其他任何操作:

Button("Hello") {
    showThanks = true
    print("Transitioned to ThanksView")
}

請記住,print()在預覽模式下不會記錄,僅在模擬器中才會記錄。