UIRefreshControl在UITableView的iOS6的底部?(UIRefreshCon

2019-07-20 02:39发布

难道不可能性增加UIRefreshControl在底部UITableView ? 我会用它来加载更多的数据。 请任何建议?

Answer 1:

我相信不会有任何简单的解决这个问题。 可能有人会写一个单独的库来实现这一行为加上一旦你在tableview中缓存数据,它会造成更多的并发症。

但是,让我们打破了问题,可以帮助你实现你想要什么。 我用下面的代码在应用程序中添加更多的行:

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    float endScrolling = scrollView.contentOffset.y + scrollView.frame.size.height;
    if (endScrolling >= scrollView.contentSize.height)
    {
        NSLog(@"Scroll End Called");
        [self fetchMoreEntries];
    }
}

或者你可以做这样的事情:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height)
    {
        if (!self.isMoreData)
        {
            self.MoreData = YES;

            // call some method that handles more rows
        }
    }
}

你一定见过很多问题,这样的方法我都如上所述,肯定不是你问什么。 但是你可以做的是,而在过程中加载更多的数据上面的代码,你可以添加一个子视图,并显示了几个类似于UIRefreshControl提供图像。 添加图像在子视图直到上面的代码被执行要被显示为进度。 家庭有所帮助。

顺便说一句,我会建议你不要做,因为它只会浪费你的时间,使一些较小所以除非你只是在做它学习的目的。



Answer 2:

您可以使用的UIView在底部来定制你的refreshControl。 创建的UIView并将其添加到UITableView的作为footerView。

UIView* footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 50)];

[footerView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"refreshImage.png"]]];

tableView.tableFooterView = footerView;

隐藏: tableView.tableFooterView.hidden = YES;

实现UIScrollView的委托 -

(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if ((scrollView.contentOffset.y + scrollView.frame.size.height) >= scrollView.contentSize.height)
    {
             tableView.tableFooterView.hidden = NO;
            // call method to add data to tableView
    }

}

将数据添加到的tableView之前保存当前通过胶版CGPoint offset = tableView.contentOffset;

呼叫reloadData然后预先设定的偏移量保存的回的tableView [tableView setContentOffset:offset animated:NO];

所以,你可以感受到新的数据在底部加入。



Answer 3:

我已经遇到同样的问题最近和写入的UIScrollView类的类别。 这是CCBottomRefreshControl 。



Answer 4:

以下的答案必须在Xcode 8和斯威夫特3。

首先声明

var spinner = UIActivityIndicatorView()

viewDidLoad方法写入以下代码:

spinner = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge)
spinner.stopAnimating()
spinner.hidesWhenStopped = true
spinner.frame = CGRect(x: 0, y: 0, width: UIScreen.main.bounds.size.width, height: 60)
tableView.tableFooterView = spinner

现在终于overridescrollViewDidEndDragging与以下委托方法:

override func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) {
        let offset = scrollView.contentOffset
        let bounds = scrollView.bounds
        let size = scrollView.contentSize
        let inset = scrollView.contentInset

        let y = offset.y + bounds.size.height - inset.bottom
        let h = size.height

        let reloadDistance = CGFloat(30.0)
        if y > h + reloadDistance {
            print("fetch more data")
            spinner.startAnimating()
        }
}


Answer 5:

其实免费明智的TableView框架确实提供了这个功能开箱。 您指定的批号,它会自动获取数据,显示最后一个单元格作为“负载更多的”细胞。 一旦你单击该单元格,它会自动加载下一批次,依此类推。 值得考虑看看。



Answer 6:

对于UITableView的,我建议使用以下方法:

-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{    
    // if this is the last row that we have in local data
    // and we didn't reach the total count of rows from the server side
    if (count == indexPath.row+1 && count < total)
    {
        // .. fetch more rows and reload table when data comes
    }
}

因为滚动视图是缓慢的,我没有使用滚动视图的方法故意。 它发生滚动视图滚动,我们要求更多的数据,更多的刷新行,并滚动视图尚未与滚动,但仍在减速,造成的问题更多的获取数据结束。



Answer 7:

在使用的CocoaPods CCBottomRefreshControl,

因为它是语言的目标。 你可以荚文件添加到您的SWIFT项目,然后运行它,我已经做到了,对我来说没有问题

希望能帮助到你。



Answer 8:

斯威夫特库添加拉来刷新底部UITableview

https://github.com/marwendoukh/PullUpToRefresh-iOS

我希望这可以帮助您。



文章来源: UIRefreshControl at the bottom of the UITableView iOS6?