iOS mjrefresh 使用

简介:          TableViewController.h // // TableViewContoller.h // IteyeBlog // // Created by youbao on 16/10/15.

 



 
 


 
 

 

TableViewController.h

//
//  TableViewContoller.h
//  IteyeBlog
//
//  Created by youbao on 16/10/15.
//  Copyright © 2016年 youbao. All rights reserved.
//

#import <UIKit/UIKit.h>


@interface TableViewContoller : UIViewController





@end

 

 

TableViewController.m

 

//
//  TableViewContoller.m
//  IteyeBlog
//
//  Created by youbao on 16/10/15.
//  Copyright © 2016年 youbao. All rights reserved.
//

#import "TableViewContoller.h"
#import "TableViewCell.h"
#import   "UIImageView+WebCache.h"
#import "OfferEntity.h"
#import "MJRefresh.h"



static NSString *const IconUrl = @"http://ods5pg0qp.bkt.clouddn.com/iteyeblog/icon.png";


@interface TableViewContoller ()<UITableViewDelegate,UITableViewDataSource>

@property (weak, nonatomic) IBOutlet UITableView *tableView;

@property (nonatomic, retain)   NSMutableArray  *mDataArray;


@end


@implementation TableViewContoller


#pragma mark - init
#pragma mark   初始化数据
- (NSArray *)mDataArray{
    
    if (!_mDataArray) {
        OfferEntity *entity = [[OfferEntity alloc] init];
        entity.iconurl = IconUrl;
        entity.name = @"baoyou";
        entity.desc = @"IT 工程师";
        
        self.mDataArray = [NSMutableArray array];
        for (int i = 0; i<5; i++) {
            [self.mDataArray addObject:entity];
        }
    }
    return _mDataArray;
}

#pragma mark - 视图管理
#pragma mark   viewdidload
-(void) viewDidLoad{

    [super viewDidLoad];

    NSLog(@"==========view did load=============");
    
    
    self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
        [self onRresh];
    }];
    self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingTarget:self refreshingAction:@selector(onLoadMore)];
}



#pragma mark - request
#pragma mark    请求数据
static int currentPage = 0;
static int defualtPageSize = 15;
-(void) onRequest:(int) currIndex{
    if(currIndex == 0){
    
        OfferEntity *entity3 = [[OfferEntity alloc] init];
        entity3.iconurl = IconUrl;
        entity3.name = @"baoyou3";
        entity3.desc = @"IT 工程师3";
        
        [self.mDataArray insertObject:entity3 atIndex:0];
        
    }else{
    
        
    }
    
    
    [self.tableView reloadData];
    
    [self.tableView.mj_header endRefreshing];
    
    if( [_mDataArray count] % defualtPageSize == 0){
        [self.tableView.mj_footer endRefreshing];
    }else{
        [self.tableView.mj_footer resetNoMoreData] ;
    }

    
    
    
}

- (void) onRresh{
    currentPage = 0;
    
    [self onRequest:currentPage];
}
-(void) onLoadMore{
    currentPage += 1;
    [self onRequest:currentPage];
}




#pragma mark - uitableview method
#pragma mark   返回有多少个Sections
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;
}
#pragma mark  对应的section有多少个元素,也就是多少行
- (NSInteger)tableView:(UITableView *)table numberOfRowsInSection:(NSInteger)section{
    return [self.mDataArray count];
}
#pragma mark  指定的 row 的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return  100.f;
}

#pragma mark  每行cell内容
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    
    //NSDictionary *item = [self.mDataArray objectAtIndex:indexPath.row];
    OfferEntity *entity =  self.mDataArray[indexPath.row];
    NSLog(@"=================%@",entity );
    
    static NSString * cellIdentifier = @"tableView";
    TableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell == nil){
            NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"TableViewCell" owner:self options:nil];
            cell = (TableViewCell *)[nib objectAtIndex:0];
    }
    
       [cell.iconImageView sd_setImageWithURL:[NSURL URLWithString: entity.iconurl ]  placeholderImage:[UIImage imageNamed:@"placeholder.png"]];
    
     cell.name.text = entity.name;
     cell.desctription.text = entity.desc;
    
    cell.onClick = ^(void){
        NSLog(@"=================");
        NSLog(@"%ld",indexPath.row);
    };
    
    return  cell;
}

#pragma mark  点击行,可以做跳转
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    
}


@end

 

 

//
//  TableViewCell.h
//  IteyeBlog
//
//  Created by youbao on 16/10/15.
//  Copyright © 2016年 youbao. All rights reserved.
//

#import <UIKit/UIKit.h>

typedef void( ^ onClick)();


@interface TableViewCell : UITableViewCell


@property (weak, nonatomic) IBOutlet UIImageView * iconImageView;
@property (weak, nonatomic) IBOutlet UILabel *name;
@property (weak, nonatomic) IBOutlet UILabel *desctription;



@property (nonatomic, copy)    onClick onClick;
//@property (nonatomic, copy)     void ( ^ onClick) (void);

@end

 

 

//
//  TableViewCell.m
//  IteyeBlog
//
//  Created by youbao on 16/10/15.
//  Copyright © 2016年 youbao. All rights reserved.
//

#import "TableViewCell.h"


@interface TableViewCell ()



@end


@implementation TableViewCell

- (void)awakeFromNib {
    [super awakeFromNib];
    // Initialization code
    
    
    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onImageClick:)];
    [self.iconImageView addGestureRecognizer:singleTap];
    
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

    // Configure the view for the selected state
}

- (IBAction)onImageClick:(UIButton *)sender{
if(self.onClick)
    self.onClick();
}



@end

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。



 
 
 谢谢您的赞助,我会做的更好!

 

 

 

 

 

目录
相关文章
|
iOS开发
iOS开发 - 关于MJRefresh刷新崩溃的问题
iOS开发 - 关于MJRefresh刷新崩溃的问题
180 0
|
2月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
24天前
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
118 66
|
10天前
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
|
1月前
|
开发框架 Android开发 iOS开发
安卓与iOS开发中的跨平台策略:一次编码,多平台部署
在移动应用开发的广阔天地中,安卓和iOS两大阵营各占一方。随着技术的发展,跨平台开发框架应运而生,它们承诺着“一次编码,到处运行”的便捷。本文将深入探讨跨平台开发的现状、挑战以及未来趋势,同时通过代码示例揭示跨平台工具的实际运用。
106 3
|
1月前
|
Java 调度 Android开发
安卓与iOS开发中的线程管理差异解析
在移动应用开发的广阔天地中,安卓和iOS两大平台各自拥有独特的魅力。如同东西方文化的差异,它们在处理多线程任务时也展现出不同的哲学。本文将带你穿梭于这两个平台之间,比较它们在线程管理上的核心理念、实现方式及性能考量,助你成为跨平台的编程高手。
|
2月前
|
存储 前端开发 Swift
探索iOS开发:从新手到专家的旅程
本文将带您领略iOS开发的奇妙之旅,从基础概念的理解到高级技巧的掌握,逐步深入iOS的世界。文章不仅分享技术知识,还鼓励读者在编程之路上保持好奇心和创新精神,实现个人成长与技术突破。
|
2月前
|
安全 IDE Swift
探索iOS开发之旅:从初学者到专家
在这篇文章中,我们将一起踏上iOS开发的旅程,从基础概念的理解到深入掌握核心技术。无论你是编程新手还是希望提升技能的开发者,这里都有你需要的指南和启示。我们将通过实际案例和代码示例,展示如何构建一个功能齐全的iOS应用。准备好了吗?让我们一起开始吧!