微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

删除所选项目时,SwiftUI列表崩溃

如何解决删除所选项目时,SwiftUI列表崩溃

我对Xcode 12(测试版)(MacOS App)中的SwiftUI列表视图有严重的疑问。

删除选定的列表项后,列表每次都会崩溃。

“ [常规] rowViewAtRow:createIfNeeded:第2行超出了范围[0-1]:”

对我来说,就像SwiftUI中的错误。我该怎么做以防止崩溃?我已经尝试了几件事,但是没有成功。

示例代码

//
// Example to reproduce bug
// * Select no item or other than last item and press button: selection is reset,last item is removed,no crash
// * Select last list item and press button "Delete last item" => Crash
//

import SwiftUI

class MyContent: ObservableObject {
    @Published var items: [String] = []
    @Published var selection: Set<String> = Set()
    
    init() {
        for i in 1...5 {
            self.items.append(String(i))
        }
    }
}

struct MyView: View {
    @Observedobject var content: MyContent = MyContent()
    
    var body: some View {
        vstack {
            List(content.items,id: \.self,selection: $content.selection) {
                item in
                Text("\(item)")
            }
            
            Button("Delete last item",action: {
                if content.items.count > 0 {
                    content.selection = Set()  // reset selection
                    var newItems = Array(content.items)
                    newItems.removeLast()
                    content.items = newItems
                }
            })
        }
    }
}

解决方法

在安装MacOS 11.0 Beta 7(20A5374g)之后重新测试。 示例代码不再崩溃,该错误似乎已修复。

感谢所有人进行测试,因此给了我提示,它是MacOS beta错误。 :-)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。