如何通过切换 Swiftui 传递函数

Posted

技术标签:

【中文标题】如何通过切换 Swiftui 传递函数【英文标题】:How Can I Pass Function Through A Toggle Swiftui 【发布时间】:2022-01-06 20:21:42 【问题描述】:

状态变量:

@State var toggleIsOn = false

切换:

Toggle(isOn: $toggleIsOn, label: Text("Notifications"))

我想要以下按钮,代表开关的每个状态,打开和关闭:

                // Will request to send notifications, if success; will schedule them.
                Button("request") 
                    NotificationManager.instance.requestAuthorization()
                
                // Will clear the queue of notifications, and delete any delivered.
                Button("cancel") 
                    NotificationManager.instance.cancelNotifications()
                

我在这个视频中找到了函数:https://www.youtube.com/watch?v=mG9BVAs8AIo

【问题讨论】:

【参考方案1】:

使用

onChange(of:)

例如:

    struct ContentView: View 
    @State var toggleIsOn: Bool = false

    var body: some View 
        Toggle(isOn: $toggleIsOn, label: Text("Notifications"))
        .onChange(of: toggleIsOn)  isOn in
             if isOn 
                  NotificationManager.instance.requestAuthorization()
              else 
                  NotificationManager.instance.cancelNotifications()
             
        
    

【讨论】:

以上是关于如何通过切换 Swiftui 传递函数的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI - 如何通过视图模型完成调用函数

更改选项卡式视图栏颜色 SwiftUI

SwiftUI - 按钮 - 如何将函数请求传递给父级

如何从内部的 SwiftUI 视图返回到 UIKit?

如何根据布尔值 (SwiftUI) 更改对象的绑定源?

SwiftUI 在视图之间切换