详细讲解WaterRefreshLoadMoreView的使用

简介:

详细讲解WaterRefreshLoadMoreView的使用

效果图:

加载控件的源码在如下网址中:上拉加载下拉刷新控件WaterRefreshLoadMoreView

使用的源码:

//
//  ViewController.m
//  NewRefresh
//
//  Created by YouXianMing on 14/11/22.
//  Copyright (c) 2014年 YouXianMing. All rights reserved.
//

#import "ViewController.h"
#import "ModelCell.h"
#import "WaterRefreshLoadMoreView.h"

@interface ViewController ()<UITableViewDataSource, UITableViewDelegate, WaterLoadMoreDelegate, WaterRefreshDelegate>

@property (nonatomic, strong) UITableView     *tableView;
@property (nonatomic, strong) NSMutableArray  *dataArray;

@property (nonatomic, strong) WaterRefreshLoadMoreView *waterMoreView;

@end

@implementation ViewController

- (void)dealloc {
    [_waterMoreView deallocWithCloseConnect];
}

- (void)viewDidLoad {
    [super viewDidLoad];

    // 创建数据源
    self.dataArray = [self createDataSource];
    
    // 创建tableView
    self.tableView = [self createTableView];
    [self.view addSubview:self.tableView];
    
    // 创建刷新控件
    self.waterMoreView = [[WaterRefreshLoadMoreView alloc] initWithWithType:WaterRefreshTypeRefreshAndLoadMore];
    self.waterMoreView.refreshDelegate    = self;
    self.waterMoreView.loadMoreDelegate   = self;
    self.waterMoreView.scrollView         = self.tableView;
}

/**
 *  创建数据源
 *
 *  @return 数据源
 */
- (NSMutableArray *)createDataSource {
    NSMutableArray *dataArray = [NSMutableArray new];
    [dataArray addObject:@"YouXianMing 0"];
    [dataArray addObject:@"YouXianMing 1"];
    [dataArray addObject:@"YouXianMing 2"];
    [dataArray addObject:@"YouXianMing 3"];
    [dataArray addObject:@"YouXianMing 4"];
    [dataArray addObject:@"YouXianMing 5"];
    [dataArray addObject:@"YouXianMing 6"];
    [dataArray addObject:@"YouXianMing 7"];
    [dataArray addObject:@"YouXianMing 9"];
    [dataArray addObject:@"YouXianMing 10"];
    [dataArray addObject:@"YouXianMing 11"];
    [dataArray addObject:@"YouXianMing 12"];
    [dataArray addObject:@"YouXianMing 13"];
    [dataArray addObject:@"YouXianMing 14"];
    [dataArray addObject:@"YouXianMing 15"];
    [dataArray addObject:@"YouXianMing 16"];
    [dataArray addObject:@"YouXianMing 17"];
    [dataArray addObject:@"YouXianMing 18"];
    [dataArray addObject:@"YouXianMing 19"];
    
    return dataArray;
}



#pragma mark - tablaView相关
/**
 *  创建tableView
 *
 *  @return tableView
 */
- (UITableView *)createTableView {
    UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 64, 320, 505)
                                                          style:UITableViewStylePlain];
    [tableView registerClass:[ModelCell class] forCellReuseIdentifier:@"ModelCell"];
    tableView.delegate   = self;
    tableView.dataSource = self;
    tableView.layer.borderWidth = 1.f;
    
    return tableView;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [_dataArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    ModelCell *cell     = [tableView dequeueReusableCellWithIdentifier:@"ModelCell"];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.titleText      = _dataArray[indexPath.row];
    
    return cell;
}

// 水滴下拉刷新的代理方法
- (void)slimeRefreshStartRefresh:(WaterRefreshLoadMoreView*)refreshView {
    // 两秒钟之后执行刷新成功
    [GCDQueue executeInMainQueue:^{
        [refreshView endRefreshWithRemindsWords:@"刷新成功!" remindImage:nil];
    } afterDelaySecs:2.f];
}
- (void)slimeRefreshEndRefresh:(WaterRefreshLoadMoreView *)refreshView {

}
// 加载更多的代理方法
- (void)loadMoreViewStartLoad:(WaterRefreshLoadMoreView*)refreshView {
    [GCDQueue executeInMainQueue:^{

        static int count = 0;

        [_dataArray addObject:@"YouXianMing - "];
        [self.tableView reloadData];
        
        if (count ++ > 1) {
            [refreshView banFunctionOfStartLoadMore:YES remind:@"没有更多内容了哦,亲!"];
        } else {
            [refreshView endLoadingMoreWithRemind:nil];
        }
        
    } afterDelaySecs:1.f];
}
- (void)loadMoreViewEndLoad:(WaterRefreshLoadMoreView *)refreshView {

}

@end

以下是需要注意的地方:

GCDQueue是本人自己写的,看官可以自行替换成其他的东西来实现,本人只是为了模拟加载的情形

目录
相关文章
|
4天前
|
弹性计算 安全 API
访问控制(RAM)|云上安全使用AccessKey的最佳实践
集中管控AK/SK的生命周期,可以极大降低AK/SK管理和使用成本,同时通过加密和轮转的方式,保证AK/SK的安全使用,本次分享为您介绍产品原理,以及具体的使用步骤。
101786 0
|
4天前
|
SQL 关系型数据库 分布式数据库
Doodle Jump — 使用Flutter&Flame开发游戏真不错!
用Flutter&Flame开发游戏是一种什么体验?最近网上冲浪的时候,我偶然发现了一个国外的游戏网站,类似于国内的4399。在浏览时,我遇到了一款经典的小游戏:Doodle Jump...
|
12天前
|
弹性计算 运维 安全
访问控制(RAM)|云上程序使用临时凭证的最佳实践
STS临时访问凭证是阿里云提供的一种临时访问权限管理服务,通过STS获取可以自定义时效和访问权限的临时身份凭证,减少长期访问密钥(AccessKey)泄露的风险。本文将为您介绍产品原理,以及具体的使用步骤。
151035 4
|
10天前
|
数据采集 存储 运维
提升团队工程交付能力,从“看见”工程活动和研发模式开始
本文从统一工程交付的概念模型开始,介绍了如何将应用交付的模式显式地定义出来,并通过工具平台落地。
119990 57
|
11天前
|
监控 负载均衡 Java
深入探究Java微服务架构:Spring Cloud概论
**摘要:** 本文深入探讨了Java微服务架构中的Spring Cloud,解释了微服务架构如何解决传统单体架构的局限性,如松耦合、独立部署、可伸缩性和容错性。Spring Cloud作为一个基于Spring Boot的开源框架,提供了服务注册与发现、负载均衡、断路器、配置中心、API网关等组件,简化了微服务的开发、部署和管理。文章详细介绍了Spring Cloud的核心模块,如Eureka、Ribbon、Hystrix、Config、Zuul和Sleuth,并通过一个电商微服务系统的实战案例展示了如何使用Spring Cloud构建微服务应用。
103503 8
|
12天前
|
人工智能 Serverless 对象存储
让你的文档从静态展示到一键部署可操作验证
通过函数计算的能力让阿里云的文档从静态展示升级为动态可操作验证,用户在文档中单击一键部署可快速完成代码的部署及测试。这一改变已在函数计算的活动沙龙中得到用户的认可。
120842 218
|
11天前
|
SQL 存储 数据可视化
Ganos H3地理网格能力解析与最佳实践
本文介绍了Ganos H3的相关功能,帮助读者快速了解Ganos地理网格的重要特性与应用实践。H3是Uber研发的一种覆盖全球表面的二维地理网格,采用了一种全球统一的、多层次的六边形网格体系来表示地球表面,这种地理网格技术在诸多业务场景中得到广泛应用。Ganos不仅提供了H3网格的全套功能,还支持与其它Ganos时空数据类型进行跨模联合分析,极大程度提升了客户对于时空数据的挖掘分析能力。
|
11天前
|
存储 缓存 安全
深度解析JVM世界:JVM内存结构
深度解析JVM世界:JVM内存结构
|
18天前
|
人工智能 编解码 对象存储
一键生成视频!用 PAI-EAS 部署 AI 视频生成模型 SVD 工作流
本教程将带领大家免费领取阿里云PAI-EAS的免费试用资源,并且带领大家在 ComfyUI 环境下使用 SVD的模型,根据任何图片生成一个小短视频。