ViewBuilder
From Xcode 12, both switch and if let are supported in the ViewBuilder!
You typically use ViewBuilder
as a parameter attribute for child view-producing closure parameters, allowing those closures to provide multiple child views. 👉 SwiftUI ⟩ View ⟩ ViewBuilder
As for ViewBuilders, it is mainly used to create custom container views, which can also become a reusable view component. 👉 Understanding SwiftUI's ViewModifiers and ViewBuilders
A good rule of thumb for me has to be to use a modifier first, and only use a builder when the code patterns really pulled strongly for that syntax. 👉 View Builders - NetSplit.com
@ViewBuilder is one of the possible function builders. 👉 Swift with Majid
ViewBuilder as a Parameter
You typically use ViewBuilder as a parameter attribute for child view-producing closure parameters, allowing those closures to provide multiple child views.
通常 @ViewBuilder closure 具有 @escaping 的特性,因為一般這個 closure 會在 .init(content:) 中傳進來,然後在 var body 中用到,如果沒有事先設為 @escaping 的話,那麼這個 closure 在 .init 中傳進來後,會隨著 .init 結束而消失,因此也沒辦法事後在 var body 中用到,所以會產生 compiler 錯誤。 問:那麼 @escaping closure 會存放在那裏呢 🤔❓ 答:通常會存放在函數外部的變數或陣列中。
但反過來說,如果傳進來的 @ViewBuilder closure 馬上在 .init 中就用掉了,這時就不需要加 @escaping 這個屬性了。
Using ViewBuilder ⭐️
共有四個步驟:
Examples
Last updated
Was this helpful?