因为toolbar的内容通常写起来是比较长的,且括号比较多,导致body看起来很凌乱。因此我习惯于把toolbar的内容提取成变量。
关键:修饰符@ToolbarContentBuilder
和 返回值some ToolbarContent
struct ContentView: View {
var body: some View {
NavigationView {
List {}
.toolbar(content: myToolBarContent)
}
}
@ToolbarContentBuilder
func myToolBarContent() -> some ToolbarContent {
ToolbarItem(placement: . navigationBarLeading) {
Text("Hi")
}
ToolbarItem(placement: .navigationBarTrailing) {
Text("Hello")
}
}
}
tips:
Xcode 14.2之后,NavigationView的 leading 、 trailing按钮,也是使用toolbar()来进行添加。
iOS16之后,NavigationView被细化成NavigationStack和NavigationSplitView,对于iPhone端,使用NavigationStack即可,用法不变。
具体请参考:https://developer.apple.com/documentation/swiftui/migrating-to-new-navigation-types