實戰(zhàn)需求
macOS SwiftUI 組件之管理復雜NavigatinoView支持多層級導航(教程含源碼)
本文價值與收獲
看完本文后,您將能夠作出下面的界面
截屏2021-02-11 下午10.59.47.png
Jietu20210211-230026.gif
看完本文您將掌握的技能
- 掌握@ViewBuilder使用
- 支持快捷鍵 .keyboardShortcut("[", modifiers: .command)
- 設置左右工具條
.toolbar {
ToolbarItem(placement: .navigation) {
Button(action: goBack, label: {
Image(systemName: "chevron.left")
})
.disabled(!canGoBack)
.keyboardShortcut("[", modifiers: .command)
}
ToolbarItem(placement: .navigation) {
Button(action: goForward, label: {
Image(systemName: "chevron.right")
})
.disabled(!canGoForward)
.keyboardShortcut("]", modifiers: .command)
}
}
基礎知識
ViewBuilder
一個自定義參數(shù)屬性,用于從閉包構造視圖陨献。
struct ViewBuilder
總覽
您通常將其用作產生子視圖的閉合參數(shù)的參數(shù)屬性,從而允許這些閉合提供多個子視圖。例如漾峡,以下函數(shù)接受通過視圖構建器生成一個或多個視圖的閉包。
func contextMenu<MenuItems : View>(
@ViewBuilder menuItems: () -> MenuItems
) -> some View
此功能的客戶端可以使用多語句閉包來提供多個子視圖喻旷,如以下示例所示:
myView.contextMenu {
Text("Cut")
Text("Copy")
Text("Paste")
if isSymbol {
Text("Jump to Definition")
}
}