微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SwiftUI-搜索时如何获取列表的选定索引?

如何解决SwiftUI-搜索时如何获取列表的选定索引?

我在SwiftUI中有一个列表,但问题是我有一个搜索框。

我的代码是这样的:

  List {
    
    ForEach(items.filter {
      self.searchText.isEmpty ? true : $0.term!.contains(self.searchText)
    },id: \.self) { item in
      Text(item.term!)
    }
    .onDelete(perform: deleteItems)
    .onTapGesture(count: 1,perform: {
      selectedItem = index // 1
    })
  }

选择项目后,我需要从该列表中获取该项目的索引。

看到/// 1行?我如何到达index

解决方法

如果我正确理解了您的目标(并且项目是平等的),则可以使用

},id: \.self) { item in
  Text(item.term!)
    .frame(maxWidth: .infinity,maxHeight: .infinity)
    .contentShape(Rectangle())
    .onTapGesture {
        // above makes complete row tappable inside dynamic content
        // so you have access here to item to find index
        selectedItem = items.firstIndex { $0 == item }
    }
}
.onDelete(perform: deleteItems)
,

Aperi的解决方案不好,因为唯一可以点击的元素是文本,而不是单元格。

正确的答案是将Text元素包装为按钮视图,如this video ...

所示
Button(action: {
  // do something()            
}) {
   Text(item.term!)
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。