#xcode #swiftui
Вопрос:
Мне нужно объявить массив флажков с помощью «@State», если я хочу использовать его внутри представления с помощью $checkBox, и он работает нормально, но когда я хочу обновить переключатели (1 или более элементов массива) в функции вне представления, массив не обновляется. Я попытался объявить его с помощью @Binding и @Published, но безуспешно. Я видел много подобных вопросов и ответов, но я не нашел решения для своего случая. Это мой код:
struct CheckboxStyle: ToggleStyle {
func makeBody(configuration: Self.Configuration) -> some View {
return HStack {
Image(systemName: configuration.isOn ? "checkmark.circle.fill" : "circle")
.resizable()
.frame(width: 24, height: 24)
.foregroundColor(configuration.isOn ? .green : .gray)
.onTapGesture { configuration.isOn.toggle() }
configuration.label
}
}
}
struct ContentView: View {
@State var checkBox = Array(repeating: false, count: 14)
let checkBoxName: [LocalizedStringKey] = ["checkPressure", "checkVisibility", "checkCloudCover", "checkAirTemp", "checkWaterTemp", "checkWindDir", "checkWindSpeed", "checkWindGust", "checkCurrentDir", "checkCurrentSpeed", "checkSwellDir", "checkWaveHeight", "checkWavePeriod", "checkTideHeight"]
var body: some View {
ScrollView {
VStack(alignment: .leading) {
Group {
ForEach(0..<7) { t in
Toggle(isOn: $checkBox[t], label: {
Text(checkBoxName[t]).font(.footnote).fontWeight(.light)
}).toggleStyle(CheckboxStyle()).padding(5)
}
}
Group {
ForEach(7..<14) { t in
Toggle(isOn: $checkBox[t], label: {
Text(checkBoxName[t]).font(.footnote).fontWeight(.light)
}).toggleStyle(CheckboxStyle()).padding(5)
}
}
}
}
}
}
Thx за помощью
Комментарии:
1. Я не вижу ничего «вне поля зрения» в примере-можете ли вы проиллюстрировать, что вы пытаетесь сделать?
2. Я просто хочу установить переключатели в функции, которая находится внутри представления содержимого, и кажется, что использование массива Bool не работает, мне придется определить переключатели в представлении тела