使用scrollToRowAtIndexPath动态滚动tableView

时间:2015-06-26 03:27:09

标签: ios swift uitableview scroll

我想在视觉上滚动浏览整个tableView。我尝试了以下内容,但它似乎没有执行滚动。相反,它只是贯穿循环。我插入了一个dispatch_async(dispatch_get_main_queue())语句,认为这样可以确保视图在继续之前刷新,但没有运气。

我做错了什么?

func scrollThroughTable() {
    for sectionNum in 0..<tableView.numberOfSections() {
        for rowNum in 0..<tableView.numberOfRowsInSection(sectionNum) {

            let indexPath = NSIndexPath(forRow: rowNum, inSection: sectionNum)
            var cellTemp = self.tableView.cellForRowAtIndexPath(indexPath)
            if cellTemp == nil {
                    dispatch_async(dispatch_get_main_queue()) {
                    self.tableView.scrollToRowAtIndexPath(indexPath!, atScrollPosition: .Top, animated: true)
                    self.tableView.reloadData()
                    }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。只需将scrollToRowAtIndexPath()与动画一起使用即可。为此,我必须创建一个getIndexPath()函数来确定我想要滚动的位置。如果我将它传递给tableView的最后一个元素,则与滚动整个表的效果大致相同。

如果你希望它以更多的滚动效果发生,请将其包装在UIView.animateWithDuration()中并使用&#39; duration&#39;。如果你想在它的完成块中,你甚至可以做更多的动画。 (无需设置不可靠的睡眠定时器等)

{{1}}