如何在UITableview内添加下拉刷新数据的功能。

8

我知道如何在视图控制器中添加下拉刷新。但现在的情况是:我有一个 UIView,其中包含一个 UITableView,我想在表格视图的底部上拉以重新加载它的数据。

如何在这个 UITableView 中添加下拉刷新,而不是它父视图控制器中添加。


你是在尝试在iOS 6中实现它吗? - Deepak Khiwani
请查看此代码 https://github.com/enormego/EGOTableViewPullRefresh - Dilip Manek
你可以使用子表视图控制器吗? - Wain
2个回答

24

在你的ViewDidLoad中添加以下内容:

UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];
[self.myTableView addSubview:refreshControl];

刷新页面

- (void)refresh:(id)sender
{
// do your refresh here and reload the tablview
}

很好。如果需要的话,我们也可以使用一些UITableViewController。 - David
@vin 你会如何告诉刷新操作停止?(你会运行什么代码?) - user19003768
@playbasegames 你可以使用endrefreshing方法来停止。 - vin
3
该方法只能通过向下拉动tableView来进行刷新,无法通过向上拉动来刷新。 - rilar
1
我同意Bot和rilar的观点。 - JH95
@JamesHarnett 你需要在 refreshControl 上调用 endRefreshing 方法。 - Sheraz

4
很简单:拿一个 UIScrollView,在里面放一个 UITableview,并将其放在UITableView的底部,然后编写 Scrollview 委托方法即可。
    #pragma mark -
    #pragma mark - Scroll View Delegate Method

    - (void) scrollViewDidScroll:(UIScrollView *)scrollView {

        if (scrollView == scrollObj) {
            CGFloat scrollPosition = scrollObj.contentSize.height - scrollObj.frame.size.height - scrollObj.contentOffset.y;
            if (scrollPosition < 30)// you can set your value
            {
                if (!spinnerBottom.isAnimating) {
                    [spinnerBottom startAnimating];
                    [self YourPUllToRefreshMethod];
                }
            }
        }
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接