昨天介紹完可以協助排版的 View 和 modifier,今天來了解一下關於 ViewBuilder 的內容。
在介紹 ViewBuilder 之前,先來整理一下程式碼,這樣也比較方便後面介紹 ViewBuilder。
那麼先來看看程式碼,在程式碼中可以看到 body 之中裝了一個 VStack,VStack 之中又裝了 Image,一個 if 判斷和一個 Button。
那我只希望 body 裡面只要裝 View 就好,不要有判斷或是 View 的設定。
那我們可以將這些東西在 body 外面打包成一個 View,這樣我在 body 裡就只要呼叫那個 View 就好,那現在來試試看。
現在將 if 判斷和 Button 都在外面打包好了,但是為什麼 Button 可以正常的在 body 裡使用,但是 if 判斷卻不行了。
這其實是因為 if 判斷不是一個 View,他只是一個流程,用來判斷在什麼情況下要做什麼事。
那要如何解決這個問題?為什麼之前在 body 裡判斷就能正常?
這裡就要提到 ViewBuilder 這個東西了。
那在介紹之前,先點進來看一下 VStack 的宣告。
可以看到在 VStack 的啟動裡,在最後面 Content 這個參數前有個 ViewBuilder。
那在點進 ViewBuilder 裡,可以看到它前面是一個叫做 resultBuilder 的東西,resultBuilder 這東西顧名思義就是用來建立某個結果,例如遇到 if 判斷,或是有兩、三個東西要組合在一起要做什麼事,這裡就是幫忙建立一個 View。
那我們就在 if 判斷的打包前面加上 ViewBuilder 試試,可以看到錯誤消失了,程式又能正常執行了。
介紹到這裡,可以發現可以在很多 View 的宣告裡發現 ViewBuilder 的身影,不只 VStack,像是 HStack、Group 這些可以包多個 View 的 View。
那關於 ViewBuilder 的基本就介紹到這裡,明天繼續介紹更多關於 ViewBuilder 的事。