IOS 处理分页数据的上拉下拉刷新

该博客介绍了如何在iOS应用中处理分页数据,使用UITableView结合MJRefresh库实现上拉刷新和下拉加载更多功能。通过MKNetworkOperation进行网络请求,获取并更新数据到表格视图。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@interface Phy_PackagesController ()
{
     MKNetworkOperation *op;
    NSMutableArray *array;
    NSMutableArray *array2;
    NSInteger _page,_page2;
    NSInteger _pageSize,_pageSize2;
}
@property (weak, nonatomic) IBOutlet UITableView *tableview;
@end

@implementation Phy_PackagesController

-(id)init{
    _page=1;  _page2=1;          //页码
    _pageSize=10;  _pageSize2=10;      //每页条数

    self = [super init];
    if(self){
        self.title=@"体检套餐";
    }
    return self;
}

-(void)dealloc
{
    [array removeAllObjects];
    [array2 removeAllObjects];
    array = nil;
    array2 = nil;
}

- (void)viewDidLoad {
    [super viewDidLoad];
    
    array=[[NSMutableArray alloc]init];
    array2=[[NSMutableArray alloc]init];

    //上下拉刷新
    
    self.tableview.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        if(!self._typelist)//普通套餐列表
        {
            [self PhyExamPackageList];
        }
        else//体检类型套餐
        {
            [self initTypeData];
        }
        
    }];
    self.tableview.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
        if(!self._typelist)//普通套餐列表
        {
            [self loadMorePhyExanjd];
        }
        else//体检类型套餐
        {
            [self loadMoreinitTypeData];
        }
        
    }];
    [self.tableview.mj_header beginRefreshing];
    
    
    
    self.tableview.delegate = self;
    self.tableview.dataSource = self;
    [self.tableview reloadData];

    
}

-(void)viewDidDisappear:(BOOL)animated
{
    if (op) {
        [op cancel];
    }
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#pragma mark - Request

//普通套餐列表
-(void)PhyExamPackageList
{
    __weak Phy_PackagesController *ws = self;
    op=[PhysicalExamManager phyExamPackageList:_page pageSize:_pageSize successBlock:^(PhyExamPackageModel *result) {
        [ws.tableview.mj_header endRefreshing];
        if(result){
            if([result.resultCode isEqualToString:kStatusSucc]){
                _page=1;
                [array removeAllObjects];
                [array addObjectsFromArray:result.response ];
                [ws.tableview reloadData];
            }else{
                [self.alertView showMessage:@"数据加载完了"];
               // [self.alertView showMessage:result.msg];
            }
        }else{
            [ws.tableview.mj_header endRefreshing];
            [self.alertView showMessage:kMessageNetError];
        }
        
    } errorBlock:^(NSString *error) {
        [ws.tableview.mj_header endRefreshing];
        [self.alertView showMessage:kMessageNetError];
    }];

}
//下拉刷新更多普通套餐数据
-(void)loadMorePhyExanjd
{
    __weak Phy_PackagesController *ws = self;
    op=[PhysicalExamManager phyExamPackageList:_page+1 pageSize:_pageSize successBlock:^(PhyExamPackageModel *result) {
        [ws.tableview.mj_footer endRefreshing];
        if(result){
            if([result.resultCode isEqualToString:kStatusSucc]){
                _page += 1;
                [array addObjectsFromArray:result.response ];
                [ws.tableview reloadData];
            }else{
                [self.alertView showMessage:@"数据加载完了"];
               // [self.alertView showMessage:result.msg];
            }
        }else{
            [ws.tableview.mj_footer endRefreshing];
            [self.alertView showMessage:kMessageNetError];
        }
        
    } errorBlock:^(NSString *error) {
        [ws.tableview.mj_footer endRefreshing];
        [self.alertView showMessage:kMessageNetError];
    }];
}


//根据体检类型查询套餐

-(void)initTypeData
{
     __weak Phy_PackagesController *ws = self;
    op=[PhysicalExamManager proListByType:self._typelist.dictId page:_page2 pageSize:_pageSize2 successBlock:^(proListByTypeModel *result) {
        [ws.tableview.mj_header endRefreshing];
        if(result){
            if([result.resultCode isEqualToString:kStatusSucc]){
                _page2=1;
                [array removeAllObjects];
                 [array addObjectsFromArray:result.response];
                [ws.tableview reloadData];
            }else{
                [self.alertView showMessage:@"数据加载完了"];
               // [self.alertView showMessage:result.msg];
            }
        }else{
            [ws.tableview.mj_header endRefreshing];
            [self.alertView showMessage:kMessageNetError];
        }
        
    } errorBlock:^(NSString *error) {
        [self.alertView showMessage:kMessageNetError];
        [ws.tableview.mj_header endRefreshing];
    }];

}

//根据体检类型查询套餐下拉刷新

-(void)loadMoreinitTypeData
{
    __weak Phy_PackagesController *ws = self;
    op=[PhysicalExamManager proListByType:self._typelist.dictId page:_page2+1 pageSize:_pageSize2 successBlock:^(proListByTypeModel *result) {
        [ws.tableview.mj_footer endRefreshing];
        if(result){
            if([result.resultCode isEqualToString:kStatusSucc]){
                _page2 += 1;
                [array addObjectsFromArray:result.response];
                [ws.tableview reloadData];
            }else{
                [self.alertView showMessage:@"数据加载完了"];
              //  [self.alertView showMessage:result.msg];
            }
        }else{
            [ws.tableview.mj_footer endRefreshing];
            [self.alertView showMessage:kMessageNetError];
        }
        
    } errorBlock:^(NSString *error) {
        [self.alertView showMessage:kMessageNetError];
        [ws.tableview.mj_footer endRefreshing];
    }];
    
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农老K

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值