В моей модели данных есть свойство UInt?
(необязательно), которое я пытаюсь связать с Toggle
и Slider
с помощью SwiftUI. Я пытаюсь добраться до чего-то вроде этого:
maximumRingsShownCount
имеет значение 4 (не ноль), тогда переключение должно быть на и значение привязано к ползунку.
maximumExpandedRingsShownCount
значение равно нулю, тогда переключатель должен выключить , а ползунок не отображается.
У меня тут 2 вопроса:
- Похоже, у нас не может быть дополнительных привязок (для ползунка)
- Возможно ли иметь преобразователь для преобразования необязательного значения в логическое (для переключателя)?
Пока, на мой взгляд, я объявил 2 свойства в дополнение к моей модели:
@ObjectBinding var configuration: SunburstConfiguration
@State private var haveMaximumRingsShownCount: Bool = false
@State private var haveMaximumExpandedRingsShownCount: Bool = false
И мое тело просмотра содержит (для каждого свойства):
Toggle(isOn: $haveMaximumRingsShownCount) {
Text("maximumRingsShownCount")
}
if haveMaximumRingsShownCount {
VStack(alignment: .leading) {
Text("maximumRingsShownCount = \(config.maximumRingsShownCount!)")
Slider(value: .constant(4 /* no binding here :( */ ))
}
}
}
Верстка пользовательского интерфейса верна, но у меня все еще есть проблемы, упомянутые выше, потому что:
- Состояние
haveMaximumRingsShownCount
не связано с тем, что моя config.maximumRingsShownCount
модель равна нулю или нет
- Слайдер в данный момент просто отображает константу и не привязан к развернутому
config.maximumRingsShownCount
свойству
Есть идеи, как решить эту проблему с помощью опций?
[Это можно воспроизвести в примере кода на https://github.com/lludo/SwiftSunburstDiagram]