Loading

SwiftUI 将toolbar的内容提取为成员变量

因为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

posted @ 2023-02-24 11:56  逆行  阅读(54)  评论(0编辑  收藏  举报