#swiftui #toggle
Вопрос:
Я работаю над XCode 12.3. Я хотел бы создать представление, включающее два дочерних представления, экземпляры из одной и той же структуры.
Эта структура содержит переключатель с настраиваемым стилем : отображение состояния в виде открытого / закрытого замка.
Моя проблема в том, что когда я запускаю приложение и управляю переключателем, на дисплее отображается изменение статуса в обоих экземплярах дочернего представления. Как будто их состояние было каким-то образом связано.
Кроме того, когда я удаляю настроенный стиль переключения (и только это), мои переключатели работают правильно.
Кто-нибудь знает, где я ошибаюсь ? И как я должен работать с независимыми состояниями переключения ? Спасибо!
Вот мой код :
Родительский вид:
struct ParentView: View {
var body: some View {
VStack(alignment: .leading) {
ChildView()
ChildView()
}
}
}
Представление для детей :
struct RepasView: View {
@State private var isLocked: Bool = false
var body: some View {
Toggle("",isOn: $isLocked)
.labelsHidden()
.toggleStyle(LockToggleStyle())
}
}
Пользовательский стиль переключения :
struct LockToggleStyle: ToggleStyle {
func makeBody(configuration: Configuration) -> some View {
Button {
configuration.isOn.toggle()
} label: {
Label {
configuration.label
} icon: {
Image(systemName: configuration.isOn ? "lock": "lock.open")
}
}
}
}
Комментарии:
1. Что сбивает с толку, так это то, что, когда я добавляю стиль переключения, весь родительский вид кажется чувствительным для переключения, таким образом, охватывая 2 переключения.