[SwiftUI] Extra arguments at positions #11, #12 in call SwiftUI 오류 해결방법
SwiftUI의 화면UI를 그리다보면 “Extra arguments at positions #11, #12 in call” 오류가 계속 발생한다.
해당 위치의 레이아웃을 주석처리하면 다른곳에서 또 동일하게 발생한다.
import SwiftUI
let defaults = UserDefaults.standard
let notifsEnabled = defaults.bool(forKey: "NotifsEnabled")
struct Settings: View {
@State var class11: String = defaults.string(forKey: "class11") ?? ""
@State var class12: String = defaults.string(forKey: "class12") ?? ""
@State var class13: String = defaults.string(forKey: "class13") ?? ""
@State var class14: String = defaults.string(forKey: "class14") ?? ""
@State var class21: String = defaults.string(forKey: "class21") ?? ""
@State var class22: String = defaults.string(forKey: "class22") ?? ""
@State var class23: String = defaults.string(forKey: "class23") ?? ""
@State var class24: String = defaults.string(forKey: "class24") ?? ""
@State var scheduleNotifications = notifsEnabled
var body: some View {
VStack(alignment: .leading) {
Toggle(isOn: $scheduleNotifications) { //Extra arguments at positions #11, #12 in call
Text("Daily schedule notifications")
}
if scheduleNotifications {
Text(CreateNotifs())
} else {
Text(DeleteNotifs())
}
Text("This App will send you a reminder each day at 8:25 with the schedule for that day")
.font(.caption)
.foregroundColor(Color.gray)
Divider()
TextField("Class 1-1", text: $class11)
TextField("Class 1-2", text: $class12)
TextField("Class 1-3", text: $class13)
TextField("Class 1-4", text: $class14)
TextField("Class 2-1", text: $class21)
TextField("Class 2-2", text: $class22)
TextField("Class 2-3", text: $class23)
TextField("Class 2-4", text: $class24)
//Spacer()
}
.padding()
.navigationBarTitle("Settings")
}
}
[해결방법]
ViewBuilder는 하나의 컨테이너에서 10개 이하의 정적 뷰만 지원한다. 그렇기 때문에 10개가 넘어가는 경우 오류가 발생하게 된다.
오류를 해결하기 위해서 그룹화(Group)를 해주면 해결된다.
Group {
TextField("Class 1-1", text: $class11)
TextField("Class 1-2", text: $class12)
TextField("Class 1-3", text: $class13)
TextField("Class 1-4", text: $class14)
TextField("Class 2-1", text: $class21)
TextField("Class 2-2", text: $class22)
TextField("Class 2-3", text: $class23)
TextField("Class 2-4", text: $class24)
}
모든 그룹에 10개의 뷰를 추가할 수 있다. 10개 이상의 뷰를 만들려면 다른 그룹을 추가해야 한다.
[REFERENCE]
- https://stackoverflow.com/questions/62820488/extra-arguments-at-positions-11-12-in-call-swiftui