iOS - 搜索号码并在该位置滚动
iOS - search the number and scroll at that position
我尝试在 table 视图中实现自定义搜索栏。我的 table 由数字组成。
在搜索栏中,我想输入我要查找的 table 中的号码,然后单击搜索按钮 -> table 在号码的位置滚动。
但我不明白该怎么做。我在互联网上找不到任何东西。也许有人可以帮助我。
一定是你有一个模型用于tableView的dataSource。
我几乎可以肯定,它是一个数组。
因此,要滚动您需要 2 个步骤:
- 1) 查找您在 searchBar 中输入的元素的 index。这可以通过遍历您的数组并将每个元素与您输入的元素进行比较(或使用 filter 函数)
来完成
- 2) 如果找到东西(元素存在),创建一个 IndexPath 类型
具有该索引和 section 0 的变量(如果您的 tableView 有一个
部分 - 默认情况下是这样),并调用 tableView
的方法 scrollToRow
示例:
let numbers = [1, 2, 3, 4, 5]
我搜索了“4”
if let intToSearch = Int(searchString),
let index = numbers.index(of: intToSearch) {
let path = IndexPath(item: index, section: 0)
tableView.scrollToRow(at: path, at: .bottom, animated: true)
}
使用 table 视图时,我们为其提供数据源。这是 object 中的一些 collection。当您 "search" 时,您是在确定 collection 中的 object 是否与搜索词相关。这是基于您的设计的某种比较。
因此您可以创建第二个 "filtered" collection 并告诉 table 更新(仅显示相关搜索结果)。或者您可以找到第一个匹配项并告诉您的 table 视图滚动到该索引。随着 tableview:scrolltoindex
我尝试在 table 视图中实现自定义搜索栏。我的 table 由数字组成。 在搜索栏中,我想输入我要查找的 table 中的号码,然后单击搜索按钮 -> table 在号码的位置滚动。 但我不明白该怎么做。我在互联网上找不到任何东西。也许有人可以帮助我。
一定是你有一个模型用于tableView的dataSource。 我几乎可以肯定,它是一个数组。
因此,要滚动您需要 2 个步骤:
- 1) 查找您在 searchBar 中输入的元素的 index。这可以通过遍历您的数组并将每个元素与您输入的元素进行比较(或使用 filter 函数) 来完成
- 2) 如果找到东西(元素存在),创建一个 IndexPath 类型 具有该索引和 section 0 的变量(如果您的 tableView 有一个 部分 - 默认情况下是这样),并调用 tableView 的方法 scrollToRow
示例:
let numbers = [1, 2, 3, 4, 5]
我搜索了“4”
if let intToSearch = Int(searchString),
let index = numbers.index(of: intToSearch) {
let path = IndexPath(item: index, section: 0)
tableView.scrollToRow(at: path, at: .bottom, animated: true)
}
使用 table 视图时,我们为其提供数据源。这是 object 中的一些 collection。当您 "search" 时,您是在确定 collection 中的 object 是否与搜索词相关。这是基于您的设计的某种比较。
因此您可以创建第二个 "filtered" collection 并告诉 table 更新(仅显示相关搜索结果)。或者您可以找到第一个匹配项并告诉您的 table 视图滚动到该索引。随着 tableview:scrolltoindex