web-dev-qa-db-ja.com

SwiftUI-トグルの使用-コンソールログ:「無効なモード 'kCFRunLoopCommonModes'」-didSetが機能しない

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でトグルを使用する最初の人であるかのようではありません。 ;-)

3
Kuhlemann
  1. この警告は無視してください。これはSwiftUIの内部であり、何にも影響を与えません。 Appleにフィードバックを送信する場合。

  2. 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?")
        }
}
2
Asperi