我只是想知道是否有一种方法可以使用UIRefreshControl实现底部刷新控制,而不需要任何第三方库。
提前致谢。
答案 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];