📱
SwiftUI のVStack でExtra argument in call エラー
VStack で一見関係のなさそうなExtra argument in call
エラーが出て、ビルドが通らなくなったのでメモ。
再現手順
import SwiftUI
struct Item: View {
var body: some View {
Rectangle()
.fill(Color.blue)
.frame(width: 32, height: 32)
}
}
struct YourView: View {
var body: some View {
VStack() {
Item()
Item()
Item()
Item()
Item()
Item()
Item()
Item()
Item()
Item()
Item() // ここでエラー
}
}
}
対応方法
SwiftUI のVStack に配置できるView は最大10個という仕様になっているようです。
Group
を使うことで、このエラーは解消できました。
struct YourView: View {
var body: some View {
VStack() {
Group {
Item()
Item()
Item()
}
Group {
Item()
Item()
Item()
}
Group {
Item()
Item()
Item()
}
Group {
Item()
Item()
}
}
}
}
参考
この仕様はViewBuilder
のbuildBlock
関数の引数が最大10個というところから来ているようです。
Discussion