未触发Swiftui切换

未触发Swiftui切换,swiftui,touch,toggle,ios13,Swiftui,Touch,Toggle,Ios13,我创建了一个简单的swiftui视图,其中包含一个带有文本和切换的简单vstack。我无法理解如何触发切换的更改,因为我开发的方法不起作用 这是密码 struct SquadMemberDetailView: View { @State var admin = false var body: some View { VStack(alignment: .leading) { Text("Amministratore&q

我创建了一个简单的swiftui视图,其中包含一个带有文本和切换的简单vstack。我无法理解如何触发切换的更改,因为我开发的方法不起作用

这是密码

struct SquadMemberDetailView: View {
    
    @State var admin = false

    var body: some View {

       VStack(alignment: .leading) {

           Text("Amministratore")
                            .font(.body)
                            .foregroundColor(Color("DarkGray"))
                            .padding([.top, .leading, .trailing])
                        
           Toggle(isOn: $admin){
           }
           .onTapGesture(perform: {
               self.admin = !self.admin
                manageToggle()
            })
            .labelsHidden()
            .padding(.horizontal)

       }

    }

}
当我切换切换状态时,永远不会调用ontapsignature方法


有什么想法吗?

切换绑定变量本身的更改您不应该手动执行,所以我相信您希望

SwiftUI 2.0+:

Toggle("", isOn: $admin)
   .onChange(of: admin) { _ in
        manageToggle()
   }
   .labelsHidden()
   .padding(.horizontal)
import Combine

...

    Toggle("", isOn: $admin)
       .onReceive(Just(admin)) { _ in
            manageToggle()
       }
SwiftUI 1.0:

Toggle("", isOn: $admin)
   .onChange(of: admin) { _ in
        manageToggle()
   }
   .labelsHidden()
   .padding(.horizontal)
import Combine

...

    Toggle("", isOn: $admin)
       .onReceive(Just(admin)) { _ in
            manageToggle()
       }

onchange仅在iOS 14中可用:(现在它可以工作,但在第一次设置状态变量时也会调用它