SwiftUI - 未取消选择列表项
Posted
技术标签:
【中文标题】SwiftUI - 未取消选择列表项【英文标题】:SwiftUI - List items are not deselected 【发布时间】:2020-09-21 19:26:32 【问题描述】:我最近切换到 Xcode 12/ios 14,我注意到我的 List
选择在导航到新视图然后返回时不再取消选择。返回时,被选中的列表项仍然突出显示。据我所知,SwiftUI 没有 deselectRowAtIndexPath 选项。我什至尝试让第一响应者辞职,但没有任何效果。
let someArray = ["one", "two", "three", "four", "five"]
var body: some View
NavigationView
VStack
Text("zero")
List(someArray, id: \.self) item in
NavigationLink(
destination: Text(item))
Text(item)
【问题讨论】:
可以添加一些相关代码吗? 我记得这是去年的一个错误,我不知道它是否会完全消失。尝试使用真实设备和模拟器。 我发现将代码剥离回一个 List 可以让它按预期工作。但是当我把它放在另一个视图的 VStack 中时,它停止了取消选择。 这个问题有什么解决办法吗? 在 iOS 14.5 模拟器和 iOS 14.6 设备上仍然可以重现该问题:只要将元素放在 List 前面,导航返回时选择仍然存在。但它在 iOS 15 上是固定的(目前处于测试阶段) 【参考方案1】:将 .id(UUID()) 放在您的列表中。这将始终重新加载列表并删除选择。
【讨论】:
我尝试在上面示例中的列表末尾添加 .id(UUID()) - 它不起作用。但我很欣赏这个建议。【参考方案2】:尝试将 UUID 添加到实际的 NavigationLink,而不是列表。该列表将使用您新添加的 UUID 来确定要取消选择的链接。
【讨论】:
以上是关于SwiftUI - 未取消选择列表项的主要内容,如果未能解决你的问题,请参考以下文章