iOS如何实现UITableView底部刷新控件

时间:2015-04-24 04:08:47

标签: ios objective-c uitableview swift uirefreshcontrol

我只是想知道是否有一种方法可以使用UIRefreshControl实现底部刷新控制,而不需要任何第三方库。

提前致谢。

3 个答案:

答案 0 :(得分:3)

您可以在表格视图部分添加页脚,使用func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView?设置刷新视图,如果页脚加载,则调用下一组刷新动画类型的东西。

可以用这种方式解决你的问题。

HTH,享受编码!!

答案 1 :(得分:3)

好吧,经过一段时间,上面的所有评论和答案,我想出了一些东西。

使用scrollViewDidScroll我实现了底部刷新

如果UIScrollView已经到达Bottom,它会向上滑动UIView,并在执行后自动向下滑动并重新加载UITableView。

scrollViewDidScroll函数

 func scrollViewDidScroll(scrollView: UIScrollView) {
    let scrollOffset : CGFloat = scrollView.contentOffset.y
    let scrollHeight : CGFloat = scrollView.frame.size.height

    let scrollContentSizeHeight : CGFloat = scrollView.contentSize.height + scrollView.contentInset.bottom

    let tableFrame : CGRect = self.tableView.frame

    if (scrollOffset + scrollHeight) >= scrollContentSizeHeight {
        self.bottomRefreshAnimation()
    } else {
        if self.tableView.frame.origin.y < 0 {
            UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
                self.tableView.frame.origin.y = self.tableView.frame.origin.y + 40
                }, completion: nil)
        }
    }
}

和self.bottomRefreshAnimation()包含从底部为UIView设置动画的代码

 func bottomRefreshAnimation(){
    if self.tableView.frame.origin.y > 0 {

        UIView.animateWithDuration(0.4, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
            self.tableView.frame.origin.y = self.tableView.frame.origin.y - 40
            }, completion: nil)

        populateData({ (finished) -> () in
            UIView.animateWithDuration(0.2, delay: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: { () -> Void in
                    if self.tableView.frame.origin.y < 0 {
                        self.tableView.frame.origin.y = self.tableView.frame.origin.y + 40
                    }
                }, completion: nil)
        })
    }
}

最重要的是,它检查UITableView Origin.y并在UIView向上滑动时将大小减小40。

希望这对你们有所帮助 如果有更好的方法来实现这一点,请告诉我

感谢所有回复。

答案 2 :(得分:1)

这应该是您正在寻找的:UIRefreshControl at the bottom of the UITableView iOS6?

您还可以使用以下方式刷新tableView的任何行:

[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade];