首页 > 解决方案 > Swiftui 切换未触发

问题描述

我创建了一个简单的 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)

       }

    }

}

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

任何想法?

标签: swiftuitouchtoggleios13

解决方案


Toggle 自己更改绑定变量,您不应该手动进行,所以我相信您想要类似的东西

SwiftUI 2.0+:

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

SwiftUI 1.0:

import Combine

...

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

推荐阅读