用SwiftUI切换开关时出现kCFRunLoopCommonModes错误

4
以下代码展示了一个 iOS 13 SwiftUI 切换按钮的例子。它在设备上(iPhone XR)运行,但是当切换按钮被点击时,在日志中显示一个错误。我只在设备上观察到这一点,而不是实时预览。
import SwiftUI


struct ContentView: View {

    @State private var foo = false

    var body: some View {
        Form{
            Toggle(isOn: $foo, label: {
                Text("Label")
            })
        }
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}

错误信息为: 2019年09月23日12:59:01.468146-0500 Demo[640:40285]提供给CFRunLoopRunSpecific的模式无效'kCFRunLoopCommonModes' - 在_CFRu nLoopError_RunCalledWithInvalidMode上中断以进行调试。此消息每次执行只会出现一次。

欢迎任何建议。

3
即使没有使用SwiftUI,这个问题仍然存在。看起来是在UISwitch代码中某处出现了bug(使用Xcode 11)。 - Rikkles
2个回答

0

和 C 语言一样,没有遇到崩溃。

我使用了一个单独的布尔变量来获取开关的值。

var stateOfSwitch = false

并且为开关使用了单独的@IBAction,如下所示...

@IBAction func toggled(_ sender: UISwitch) {
    stateOfSwitch = ! stateOfSwitch
}

记得将IBAction链接到界面构建器中的开关元素。

并使用stateOfSwitch变量根据开关实现任何逻辑。

我知道这是一个解决方法,希望不久后就不需要了。

不确定如何在SwiftUI中实现此操作。


以前用 UIKit 从来没有遇到过这个问题。 - gone

0

我在 iPhone 8 模拟器上使用开关时也遇到了这个错误。

没有崩溃的经历。

当移动单元格时,具有切换按钮的单元格不会正确地调整大小,但是通过添加一个布尔值并将其作为单元格移动函数的一部分进行切换来避免了这种情况 {例如,triggerRefresh.toggle()}。这种意外的用户行为可能与切换错误有关,也可能与之无关。


你能详细说明一下这个答案吗?我不确定如何实施这个修复? - Joseph Astrahan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接