加载视图控制器时如何滚动到特定的 UITableViewCell 顶部到 UITableView 顶部

Posted

技术标签:

【中文标题】加载视图控制器时如何滚动到特定的 UITableViewCell 顶部到 UITableView 顶部【英文标题】:How to scroll to a specific UITableViewCell top to UITableView top when load view controller 【发布时间】:2018-05-17 06:35:47 【问题描述】:

我想在加载视图控制器时将特定的表格视图单元格滚动到顶部

这个方法很好用。但是当单元格高度动态变化时,单元格不会滚动到顶部,而是滚动到中心

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 

    let cell = tableView.dequeueReusableCell(withIdentifier: "slideshowTableViewCell", for: indexPath) as! slideshowTableViewCell

    if(self.scrollEnabled)

        let indexPath = NSIndexPath(row: self.imageId, section: 0)
        self.slideshowView.scrollToRow(at: indexPath as IndexPath, at: .top, animated: true)


        self.scrollEnabled = false
    

【问题讨论】:

请停止在 cellForRowAt 方法上调用 scrollToRow。这是非常糟糕的做法。您可以计算 indexPath 并在 viewWillAppear 上调用 scrollToRow 并使其仅调用一次。 【参考方案1】:

您应该在viewWillAppear 上致电scrollToRow

override func viewWillAppear(_ animated: Bool) 
    super.viewWillAppear(animated)

    tblList.scrollToRow(at: Your_desired_indexPath, at: .top, animated: true)

【讨论】:

以上是关于加载视图控制器时如何滚动到特定的 UITableViewCell 顶部到 UITableView 顶部的主要内容,如果未能解决你的问题,请参考以下文章

加载不同的纵向/横向 UIViews

加载滚动视图时性能不佳

加载数据后如何防止滚动视图滚动到网络视图?

CollectionView 标题在滚动时停止刷新/重新加载数据

滚动时未调用 sizeForItemAt

滚动时UITableView不加载单元格数据