SwiftUI - 开关的使用 - 控制台日志:“无效模式 'kCFRunLoopCommonModes'” - didSet 不起作用
SwiftUI - usage of toggles - console logs: “invalid mode 'kCFRunLoopCommonModes'” - didSet does not work
我在使用 SwiftUI 切换时遇到一个普遍问题。
每当我使用它们时,我都会收到此控制台错误:
invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.
除此之外,当我在模拟器中按下开关时,didSet 不打印任何内容。
有没有人有想法,或者这是一个 SwiftUI 错误?
几个月前 Whosebug 上的其他相关问题似乎没有找到解决方案。
import SwiftUI
struct ContentView: View {
@State private var notifyCheck = false {
didSet {
print("Toggle pushed!")
}
}
var body: some View {
Toggle(isOn: $notifyCheck) {
Text("Activate?")
}
}
}
如果这是一个错误,我想知道切换的解决方法是什么。
我并不是第一个在 iOS 中使用切换开关的人。 ;-)
忽略那个警告,它是 SwiftUI 的内部结构,不会影响任何东西。如果您想向 Apple 提交反馈。
didSet
不起作用,因为这里的 self
(作为 View
结构)是不可变的,而 @State
只是 属性 包装器,通过非变异 setter 将包装值存储在 self
.
之外
更新: 在切换时做点什么
@State private var notifyCheck = false
var body: some View {
let bindingOn = Binding<Bool> (
get: { self.notifyCheck },
set: { newValue in
self.notifyCheck = newValue
// << do anything
}
)
return Toggle(isOn: bindingOn) {
Text("Activate?")
}
}
我在使用 SwiftUI 切换时遇到一个普遍问题。 每当我使用它们时,我都会收到此控制台错误:
invalid mode 'kCFRunLoopCommonModes' provided to CFRunLoopRunSpecific - break on _CFRunLoopError_RunCalledWithInvalidMode to debug. This message will only appear once per execution.
除此之外,当我在模拟器中按下开关时,didSet 不打印任何内容。 有没有人有想法,或者这是一个 SwiftUI 错误?
几个月前 Whosebug 上的其他相关问题似乎没有找到解决方案。
import SwiftUI
struct ContentView: View {
@State private var notifyCheck = false {
didSet {
print("Toggle pushed!")
}
}
var body: some View {
Toggle(isOn: $notifyCheck) {
Text("Activate?")
}
}
}
如果这是一个错误,我想知道切换的解决方法是什么。 我并不是第一个在 iOS 中使用切换开关的人。 ;-)
忽略那个警告,它是 SwiftUI 的内部结构,不会影响任何东西。如果您想向 Apple 提交反馈。
didSet
不起作用,因为这里的self
(作为View
结构)是不可变的,而@State
只是 属性 包装器,通过非变异 setter 将包装值存储在self
. 之外
更新: 在切换时做点什么
@State private var notifyCheck = false
var body: some View {
let bindingOn = Binding<Bool> (
get: { self.notifyCheck },
set: { newValue in
self.notifyCheck = newValue
// << do anything
}
)
return Toggle(isOn: bindingOn) {
Text("Activate?")
}
}