SwiftUIでトグルを使用する一般的な問題があります。それらを使用するたびに、次のコンソールエラーが発生します。
cFRunLoopRunSpecificに提供されている無効なモード「kCFRunLoopCommonModes」-デバッグするには、_CFRunLoopError_RunCalledWithInvalidModeで中断します。このメッセージは、実行ごとに1回だけ表示されます。
これに加えて、シミュレータでトグルを押しても、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?")
}
}
}
これがバグの場合、トグルの回避策は何でしょうか。私がiOSでトグルを使用する最初の人であるかのようではありません。 ;-)
この警告は無視してください。これはSwiftUIの内部であり、何にも影響を与えません。 Appleにフィードバックを送信する場合。
didSet
は機能しません。ここでself
は(View
構造体として)不変であり、@State
は単なるプロパティラッパーであり、非変異型セッターを介してself
の外にラップされた値を格納します。
pdate:トグルで何かをする
@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?")
}
}