gpt4 book ai didi

ios - 在 SwiftUI 中使用 List 时如何使用 NavigationLink isActive 绑定(bind)?

转载 作者:行者123 更新时间:2023-12-01 16:05:13 25 4
gpt4 key购买 nike

用例非常简单。我有一个地点列表,每个地点对应一个地理围栏。我需要在用户所在地理围栏的特定行中启用导航。该列表是动态的,并且是从 API 中获取的。 Stackoverflow 上有类似的问题,但这些问题只针对静态列表。
我尝试使用 bool 字典,但我无法使其工作。
这是一个简化的模拟代码:

struct ListView: View {
@State private var navActive: [UUID: Bool] = [:]
var body: some View {

List (viewModel.allItems, id: \.id) { item in
NavigationLink(destination: DetailView(item), isActive: $navActive[item.id]) {
Text(item.name)
.onTapGesture {
if currentLocation.isInside(item.geofence) { navActive[item.id] = true }
}
}
}
}
}
我收到此错误: 无法将类型“Binding ”的值转换为预期的参数类型“Binding
在 NavigationLink isActive 参数上。
注意:我在使用 onRecieve 修饰符接收 allItems 时使用键值对填充了 navActive 字典

最佳答案

这是您的用例的一种可能方法

struct ListView: View {

// ... your view model defined here

@State private var selectedItem: UUID? = nil
var body: some View {

List (viewModel.allItems, id: \.id) { item in
Text(item.name)
.onTapGesture {
self.selectedItem = item.id
}
.background(
NavigationLink(destination: DetailView(item), tag: item.id,
selection: $selectedItem) { EmptyView() }
.buttonStyle(PlainButtonStyle())
)
}
}
}

关于ios - 在 SwiftUI 中使用 List 时如何使用 NavigationLink isActive 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63197064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com