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()
在預覽模式下不會記錄,僅在模擬器中才會記錄。