Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 具有多选功能的SwiftUI列表不会显示所有选定项目_List_Performance_Swiftui - Fatal编程技术网

List 具有多选功能的SwiftUI列表不会显示所有选定项目

List 具有多选功能的SwiftUI列表不会显示所有选定项目,list,performance,swiftui,List,Performance,Swiftui,我遇到了SwiftUI列表视图的一些令人费解的行为。使用已包含某些选定项的绑定调用列表视图。我知道他们存在。我的数据比屏幕上显示的数据长。零件上已可见的所有选定项目都会按预期显示,但当我向下滚动列表以查找其他项目时,它们不会立即显示。我得等几分钟才能看到 以下是生成列表的代码: import SwiftUI struct ArtistView: View { @State private var editMode = EditMode.active @Binding var

我遇到了SwiftUI列表视图的一些令人费解的行为。使用已包含某些选定项的绑定调用列表视图。我知道他们存在。我的数据比屏幕上显示的数据长。零件上已可见的所有选定项目都会按预期显示,但当我向下滚动列表以查找其他项目时,它们不会立即显示。我得等几分钟才能看到

以下是生成列表的代码:

import SwiftUI

struct ArtistView: View {

    @State private var editMode = EditMode.active
    @Binding var selection : Set<String>
    var artists = [String]()

    var body: some View {

        List(selection: self.$selection) {
            ForEach (self.artists, id: \.self) {artist in
                Text(artist)
            }
        }
        .environment(\.editMode, self.$editMode)

    }
}
有人见过这种行为吗?更重要的是,有没有办法加速这种显示问题


谢谢

我认为在视图之外设置选择状态并不是一个好主意,因为它负责更新列表。它必须不是绑定的,而是在同一视图或某个专用视图模型中的状态。谢谢,但我的理解是,多选择列表选择参数必须是一个集合的绑定。我尝试了不同的排列方式来传递绑定。本质上,我需要在环境变量中进行选择,但也怀疑这可能是一个问题。因此,我将其传递给视图,并将其传递到本地绑定中。我相信如果在示例中看到这一点,但可能是错误的。来自的答案应该是helpfulfork再次感谢,我尝试过,但仍然得到相同的行为。如上所述,选择本身起作用,并在选择时正确显示。我正在保存选择并离开视图,但当我返回列表并将上一个选择传递给它时,并非所有选定项都显示为选定项,即使它们在集合中。奇怪的是,它恰恰是列表中较低的项目,因此不在屏幕上。过了很长一段时间(我指的是很长一段时间),它们最终显示为选中。为什么会出现这种延迟?我遇到过同样的问题,当选定的项目离开屏幕时,它们似乎没有被选中(但它们没有)。您是否找到了这种行为的解决方案?我认为在视图之外设置选择状态并没有什么好处,因为它负责更新列表。它必须不是绑定的,而是在同一视图或某个专用视图模型中的状态。谢谢,但我的理解是,多选择列表选择参数必须是一个集合的绑定。我尝试了不同的排列方式来传递绑定。本质上,我需要在环境变量中进行选择,但也怀疑这可能是一个问题。因此,我将其传递给视图,并将其传递到本地绑定中。我相信如果在示例中看到这一点,但可能是错误的。来自的答案应该是helpfulfork再次感谢,我尝试过,但仍然得到相同的行为。如上所述,选择本身起作用,并在选择时正确显示。我正在保存选择并离开视图,但当我返回列表并将上一个选择传递给它时,并非所有选定项都显示为选定项,即使它们在集合中。奇怪的是,它恰恰是列表中较低的项目,因此不在屏幕上。过了很长一段时间(我指的是很长一段时间),它们最终显示为选中。为什么会出现这种延迟?我遇到过同样的问题,当选定的项目离开屏幕时,它们似乎没有被选中(但它们没有)。你找到解决这种行为的办法了吗?
NavigationLink(destination: ArtistView(selection: self.$selection, artists: self.settings.artists)) {
                                Text("Select Artists:")
                        }