当前位置: 首页 > 面试题库 >

自动滚动到具有特定值的单元格

洪研
2023-03-14
问题内容

我在这样的表格视图中有一个数字列表。

如您所见,数字是重复的。让我们考虑一组重复的数字作为一个组。因此,有一组1,一组2,依此类推。

我想做的是当应用启动时,我需要自动滚动到指定组的开始位置。在进一步解释之前,这是到目前为止的代码。

import UIKit

import UIKit

class TableViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {

    private var scrollToTime = true
    private var items = [Int]()
    private var groupNoToScroll = 12

    override func viewDidLoad() {
        super.viewDidLoad()

        items = [1, 1, 2, 2, 2, 3, 4, 4, 4, 4, 4, 5, 5, 6, 7, 7, 8, 8, 8, 9, 10, 10, 10, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 13, 13, 14, 14, 14, 14, 15, 15, 16, 17, 17, 18, 18, 18, 19, 19, 19, 19, 20, 21, 22, 22, 23, 23, 23]
    }

    // MARK: - UITableViewDataSource
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as UITableViewCell
        cell.textLabel?.text = String(items[indexPath.row])

        return cell
    }

    // MARK: - UITableViewDelegate
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {

        let lastRow = tableView.indexPathsForVisibleRows()?.last as NSIndexPath
        if indexPath.row == lastRow.row {
            if scrollToTime == true {
                let indexPath = NSIndexPath(forRow: groupNoToScroll, inSection: 0)
                tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: true)
                scrollToTime = false
            }
        }
    }
}

我为变量分配了值12 groupNoToScroll。这意味着当应用程序启动时,我希望表格视图自动滚动到
12s组单元格的开始。

但是目前,我的代码执行的是滚动到第12个单元格,而不是滚动到具有值 12 的单元格。我的问题是如何检查这些单元格的值并滚动到指定的数字?


问题答案:

您可以使用查找项目的索引(将是其行),然后滚动到该索引。find函数返回数组中特定元素的索引。

if let index = find(items, groupNoToScroll)
{
    let indexPath = NSIndexPath(forRow: index, inSection: 0)
    tableView.scrollToRowAtIndexPath(indexPath, atScrollPosition: .Top, animated: true)
}


 类似资料:
  • 我正在尝试使用自动布局来自动调整大小,但我似乎无法使单元格根据内容调整大小。我很难理解单元格大小是如何从单元格contentView中的内容更新的。 以下是我尝试过的设置: 自定义,在其contentView中具有。 contentView的水平约束是:“H:|[_textView(320)]”,即固定在单元格左侧,显式宽度为320。 contentView的垂直约束是:“V:|-0-[[u te

  • 问题内容: 在我们的一个内部角度应用程序中,显示了一个许可证文本框。由于内部有很多文本,因此以元素表示的许可证框具有滚动条。 问题: 如何测试元素是否具有滚动? 这是元素的HTML表示形式: 在哪里定义了以下CSS样式: 问题答案: 技巧(最初在这里提出)是比较属性: 该CSS属性指定 元素的内容区域的高度 。内容区域位于元素的填充,边框和边距之内。 与: 的只读属性是一个 元素的含量的高度,其中

  • 我觉得这可能是一个常见的问题,我想知道是否有任何共同的解决方案。 基本上,我的UITableView拥有每个单元格的动态单元格高度。如果我不在UITableView的顶部,并且我< code > table view . reloaddata(),向上滚动会变得不稳定。 我认为这是因为我在向上滚动时重新加载了数据,UITableView正在重新计算每个可见单元格的高度。如何减轻这种情况,或者如何只

  • 问题内容: 我觉得这可能是一个常见的问题,并且想知道是否有任何通用的解决方案。 基本上,我的UITableView具有每个单元格的动态单元格高度。如果我不在UITableView和I的顶部,则向上滚动变得跳动。 我相信这是由于以下事实:当我向上滚动时重新加载数据时,UITableView正在重新计算每个可见的单元格的高度。如何缓解这种情况,或者如何仅将数据从某个IndexPath重新加载到UITa

  • 问题内容: 我需要在网页上显示一个大表,并且需要防止第一列和第一行滚动。 我想动态设置此表的垂直大小(在某些静态大小的页眉/页脚页面内容之间),以使其尽可能高,而不必强制浏览器窗口具有垂直滚动条。 这仅需要在使用所有/任何版本的现代浏览器中工作:html,css,javascript,jquery 重要顺序: 具有许多表单字段,隐藏值,行的javascript折叠等的复杂表,稍后将添加 第一行将有

  • 我一直在研究一个思想,在这个思想中,它保持自动滚动,而不需要用户交互,这一点在使用android API(例如,SmoothScrollTopositionFromTop)时是绝对可行的。 我需要提高流畅度,效率和控制速度