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