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