Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios SwiftUI计划本地通知不带按钮?_Ios_Swift_Swiftui_Notifications - Fatal编程技术网

Ios SwiftUI计划本地通知不带按钮?

Ios SwiftUI计划本地通知不带按钮?,ios,swift,swiftui,notifications,Ios,Swift,Swiftui,Notifications,这可能有一个非常简单的答案,因为我对Swift和SwiftUI非常陌生,而且刚刚开始学习。我试图安排在特定时间每天重复的本地通知,但只有在选择切换时才这样做。因此,如果一个变量为true,我希望该通知被安排,但它们都是用按钮显示的。我想用一个开关代替按钮。脚本中是否有某个地方必须这样做?要使用切换而不是按钮,我需要做哪些不同的操作?您可以观察切换何时打开和关闭——在iOS 14中,您可以使用.onChange修改器来执行此操作: import SwiftUI struct ContentVie

这可能有一个非常简单的答案,因为我对Swift和SwiftUI非常陌生,而且刚刚开始学习。我试图安排在特定时间每天重复的本地通知,但只有在选择切换时才这样做。因此,如果一个变量为true,我希望该通知被安排,但它们都是用按钮显示的。我想用一个开关代替按钮。脚本中是否有某个地方必须这样做?要使用切换而不是按钮,我需要做哪些不同的操作?

您可以观察切换何时打开和关闭——在iOS 14中,您可以使用
.onChange
修改器来执行此操作:

import SwiftUI

struct ContentView: View {
    
    @State var isOn: Bool = false
    
    var body: some View {
        Toggle(isOn: $isOn, label: {
            Text("Notifications?")
        })

        /// right here!
        .onChange(of: isOn, perform: { toggleIsOn in
            if toggleIsOn {
                print("schedule notification")
            } else {
                print("don't schedule notification")
            }
        })
    }
}

对于早期版本,您可以尝试将
onReceive
与联合收割机一起使用:

import SwiftUI
import Combine

struct ContentView: View {

    @State var isOn: Bool = false

    var body: some View {
        Toggle(isOn: $isOn, label: {
            Text("Notifications?")
        })
        
        /// a bit more complicated, but it works
        .onReceive(Just(isOn)) { toggleIsOn in
            if toggleIsOn {
                print("schedule notification")
            } else {
                print("don't schedule notification")
            }
        }
    }
}
您可以找到更具创造性的解决方案来观察切换的变化