首页 > 解决方案 > SwiftUI 自定义切换样式问题

问题描述

我在 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")
            }
        }
    }
}

标签: swiftuitoggle

解决方案


推荐阅读