MenuPicker 选中 SwiftUI 时排序
Posted
技术标签:
【中文标题】MenuPicker 选中 SwiftUI 时排序【英文标题】:MenuPicker Sort when selected SwiftUI 【发布时间】:2021-02-05 12:36:10 【问题描述】:我试图在菜单中选择一种排序并发送后端。但不知何故 onTapGesture 没有被触发。我也尝试使用按钮,但它也不起作用。或者是否有任何其他方式来触发任何排序 In 菜单选择器。
var sortMenuPicker : some View
HStack(alignment: .center)
Spacer()
Picker(selection: $selection, label: SortView().frame(height:UIScreen.main.bounds.height * 0.050), content:
ForEach(sortListArray, id: \.uid, content: item in
ForEach(item.sortList ?? [],id:\.uid) data in
if item.id == "sort"
Text(data.name ?? "")
.onTapGesture
sortId = data.id
getProductList()
)
)
.pickerStyle(MenuPickerStyle())
【问题讨论】:
选择变量的类型是什么? 我原以为您需要修改 @State 变量来触发 UI 的刷新。 var selection = UUID() 【参考方案1】:为您的 Text()
添加标签并删除 Tap Gesture。
Text(data.name ?? "").tag(data.uid) //<-- Here
并使用 onReceive 来收听您的选择
.onReceive(Just(selection)) (_) in
print(selection)
注意:为此您需要import Combine
【讨论】:
实际上没有用。我不得不说每种排序都有一个代表 data.id 的 id,所以我必须将 data.id 发送到服务器,它会为我提供新的产品列表。每次用户点击不同的排序类型时,我都应该请求。 那么你应该使用id进行选择或者你可以从UUID中找到id。 如何从 UUID 中找到 id 我找不到解决方案。当我在 Menu 中选择时,我可以获得每种排序类型的 UUID。以上是关于MenuPicker 选中 SwiftUI 时排序的主要内容,如果未能解决你的问题,请参考以下文章
更改 TabView (SwiftUI) 中未选中图标的颜色