Проблема пользовательского стиля SwiftUI

#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 переключения.