Не совсем отвечаю на ваш вопрос, но вот правильный способ настроить SegmentedControl
(не хотел публиковать этот код в качестве комментария, потому что он выглядит некрасиво). Замените вашу ForEach
версию следующим кодом:
ForEach(0..<SectionType.allCases.count) { index in
Text(SectionType.allCases[index].rawValue).tag(index)
}
Пометка представлений регистрами или даже строками делает его неадекватным - выбор не работает.
Вы также можете добавить следующее после объявления SegmentedControl
, чтобы убедиться, что выбор работает:
Text("Value: \(SectionType.allCases[self.selection].rawValue)")
Полная версия body
:
var body: some View {
VStack {
SegmentedControl(selection: self.selection) {
ForEach(0..<SectionType.allCases.count) { index in
Text(SectionType.allCases[index].rawValue).tag(index)
}
}
Text("Value: \(SectionType.allCases[self.selection].rawValue)")
}
}
По поводу вашего вопроса - я попытался добавить didSet
обозреватель к selection
, но он вылетает из-за редактора Xcode и выдает ошибку «Ошибка сегментации: 11» при попытке сборки.