Kuh*_*ann 4 toggle didset swiftui
我在使用 SwiftUI 的切换时遇到了一般问题。每当我使用它们时,我都会收到此控制台错误:
提供给 CFRunLoopRunSpecific 的无效模式 'kCFRunLoopCommonModes' - 中断 _CFRunLoopError_RunCalledWithInvalidMode 进行调试。此消息每次执行只会出现一次。
除此之外,当我在模拟器中按下切换键时,didSet 不会打印任何内容。有没有人有想法,或者这是一个 SwiftUI 错误?
StackOverflow 上几个月前的其他相关问题似乎没有找到解决方案。
import SwiftUI
struct ContentView: View {
@State private var notifyCheck = false {
didSet {
print("Toggle pushed!")
}
}
var body: some View {
Toggle(isOn: $notifyCheck) {
Text("Activate?")
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果这是一个错误,我想知道切换的解决方法是什么。我并不是第一个在 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?")
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2248 次 |
最近记录: |