实战需求
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
一个自定义参数属性,用于从闭包构造视图。
struct ViewBuilder
总览
您通常将其用作产生子视图的闭合参数的参数属性,从而允许这些闭合提供多个子视图。例如,以下函数接受通过视图构建器生成一个或多个视图的闭包。
func contextMenu<MenuItems : View>(
@ViewBuilder menuItems: () -> MenuItems
) -> some View
此功能的客户端可以使用多语句闭包来提供多个子视图,如以下示例所示:
myView.contextMenu {
Text("Cut")
Text("Copy")
Text("Paste")
if isSymbol {
Text("Jump to Definition")
}
}