【问题标题】:SwiftUI Toggle changing state when entering backgroundSwiftUI 在进入后台时切换状态
【发布时间】:2022-09-28 21:36:32
【问题描述】:

我有一个带有列表的视图,并且在列表内部有一个与视图模型中的布尔值绑定的切换,如果我打开切换,则布尔值为真,反之亦然,这里的问题是,如果我打开切换,然后当我重新打开应用程序时进入背景,即使布尔值为真,切换也会关闭,然后我返回上一个屏幕,当我返回屏幕时,它似乎打开了切换,有没有办法避免这个问题?这是下面的列表代码:

List {
        Section(header: Text(\"Flags\")) {
            ForEach(viewModel.flags.indices, id: \\.self) { index in
                Toggle(isOn: $viewModel.flags[index].isActive) {
                    Text(viewModel.flags[index].name.rawValue.camelCaseToCapitalized())
                }
            }
        }
  • 应用程序在进入后台时会丢失其状态,这很奇怪。提供的代码本身不会导致这种情况,而是应用程序的其他部分。

标签: swiftui


【解决方案1】:

您可以尝试使用 onAppear 修饰符在视图出现时更新切换的状态。

List {
        Section(header: Text("Flags")) {
            ForEach(viewModel.flags.indices, id: \.self) { index in
                Toggle(isOn: $viewModel.flags[index].isActive) {
                    Text(viewModel.flags[index].name.rawValue.camelCaseToCapitalized())
                }
                .onAppear {
                    viewModel.flags[index].isActive = true
                }
            }
        } 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-07
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2022-10-19
    • 1970-01-01
    相关资源
    最近更新 更多