SwiftUI 在没有按钮的情况下安排本地通知?
SwiftUI Schedule Local Notification Without Button?
这可能有一个非常简单的答案,因为我对 Swift 和 SwiftUI 还很陌生,而且才刚刚开始学习。我正在尝试安排每天在特定时间重复的本地通知,但只有在选择切换时才会这样做。因此,如果变量为真,我希望安排该通知。 I looked at some tutorials online such as this one,但它们都使用按钮显示。我想使用切换而不是按钮。脚本中是否有特定位置必须执行此操作?我需要做哪些不同的事情才能使用切换按钮而不是按钮?
您可以观察开关何时打开和关闭 -- 在 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
和 Combine:
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")
}
}
}
}
您可以找到更有创意的解决方案来观察切换变化 。
这可能有一个非常简单的答案,因为我对 Swift 和 SwiftUI 还很陌生,而且才刚刚开始学习。我正在尝试安排每天在特定时间重复的本地通知,但只有在选择切换时才会这样做。因此,如果变量为真,我希望安排该通知。 I looked at some tutorials online such as this one,但它们都使用按钮显示。我想使用切换而不是按钮。脚本中是否有特定位置必须执行此操作?我需要做哪些不同的事情才能使用切换按钮而不是按钮?
您可以观察开关何时打开和关闭 -- 在 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
和 Combine:
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")
}
}
}
}
您可以找到更有创意的解决方案来观察切换变化