gpt4 book ai didi

ios - 如何在 TableView 搜索/过滤中获取项目的前一个 indexPath

转载 作者:行者123 更新时间:2023-11-28 13:30:27 26 4
gpt4 key购买 nike

标题可能看起来有点含糊或令人困惑,因为我不知道如何用一行来解释我的问题。

我有一个包含约 500 个单元格的 tableview,其中使用 API 填充了详细信息。 tableview 具有基于名称的搜索/过滤功能

例如,“ABCD”在单元格 456 上,如果我搜索 ABCD,表格 View 将刷新并将 ABCD 放在单元格 0 上。

let searchtextupper = searchText.uppercased()
searchActive = true
filterdata = self.name.filter { $0.contains("\(searchtextupper)")
Table.reloadData()
}

所有这部分都是正确的,但我想在重新加载 tableview 之前获取 ABCD 的 indexPath。我想知道在 tableview 重新加载并将“ABCD”单元格放在单元格 0 之前,“ABCD”位于单元格 456 上。

如何获取 indexPath

回答,以防其他人需要它:

通过使用 @Abhisheks 回答。

我在类上声明了一个简单的 int 数组var arrayofindices = [Int]()

然后将其添加到搜索/过滤功能中

let indexArray = name.indices.filter { name[$0].localizedCaseInsensitiveContains(searchtextupper) }
arrayofindices = indexArray

和 didSelectRowAt

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

var newindex = arrayofindices[indexPath.row]

searchmember.email = self.email[newindex]

}

这里的searchmember是一个structemail是其中的一个variableself.email 是一个本地声明的数组,用于存储从 API 接收的电子邮件 ID,具有过滤前的完整电子邮件列表。

最佳答案

您可以使用此代码获取过滤器位置的索引。但首先我认为你的名字数组可能包含相同的名字,所以在那种情况下你需要那个名字的所有索引,对吗?为此,请使用此代码 -

let indexArray = name.indices.filter { name[$0].localizedCaseInsensitiveContains(searchtextupper) }

在 indexArray 中,您将获得该名称的所有索引。

如果你确定你的名字数组不会包含重复的名字,那么 -

let index = name.firstIndex{$0 === searchtextupper}

希望这对您有所帮助。快乐编码

关于ios - 如何在 TableView 搜索/过滤中获取项目的前一个 indexPath,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57439788/

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