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 MJRefresh 开发的插件,可提供自定义的弹性刷新.zip,基于ios MJRefresh https://github.com/CoderMJLee/MJRefresh 开发的插件,可提供自定义的弹性刷新
在iOS开发中,MJRefresh是一个广泛使用的开源库,它提供了下拉刷新和上拉加载更多的功能,使得开发者能够轻松地为应用添加这类交互效果。针对MJRefresh的优化,主要是为了提高用户体验,减少性能消耗,以及确保其在...
本篇文章将深入探讨UICollectionView的使用方法,并解决在集成MJRefresh下拉刷新时可能出现的遮挡问题。 首先,我们来详细了解UICollectionView。它允许开发者自定义布局,支持水平和垂直滚动,甚至可以创建复杂的...
"iOS上拉加载更多和下拉刷新mjrefresh使用"这一主题,主要关注的是利用第三方库MJRefresh来实现这两个功能。MJRefresh是一个流行的、易于使用的Swift或Objective-C库,它提供了丰富的动画效果和高度自定义的选项,让...
MJRefresh框架,作为一个广泛使用的开源库,提供了对各种iOS设备的兼容性,包括具有安全区域布局的iPhoneX。本教程将指导开发者如何在不同iPhone型号上集成MJRefresh,并特别关注如何进行iPhoneX的适配工作,确保...
总结一下,本文介绍了如何在iOS应用中使用MJRefresh库实现自定义动画的刷新和加载效果。通过创建图片数组并设置到`MJRefreshGifHeader`和`MJRefreshAutoGifFooter`组件中,可以轻松地实现个性化的下拉刷新和上拉加载...
MJRefresh是一个广泛使用的开源库,它为Objective-C和Swift开发者提供了下拉刷新和上拉加载更多的功能。 【描述分析】 描述中提到,这个demo基于MJRefresh的原始代码,但做了一些小改动以适应iOS 11的新特性。...
在github上下载之后,将MJRefresh文件添加到项目中,并且在需要使用的文件上引入MJRefresh.h。然后在该文件的viewDidLoad方法中指定tableView的header和footer,如下: #import MJRefreshTableViewController.h #...
MJRefresh是一个广泛使用的开源库,它为Objective-C编程语言提供了简单易用的下拉刷新和上拉加载更多解决方案。这个库由iOS开发者Michael Jiang创建,大大简化了在UITableView和UICollectionView中实现这些动态刷新...
github地址:https://github.com/eppeo/FootBallRefreshView 博客:www.wufeiyue.com 简书:http://www.jianshu.com/users/a3c05f95bce8
为了在项目中使用MJRefresh,开发者首先需要将MJRefresh库添加到项目中,这可以通过CocoaPods、Carthage或者手动导入完成。然后,只需几行代码即可实现上下拉刷新功能: ```objc // 下拉刷新 [self.tableView....
这个名为"ios-swift版的类似MJRefresh方便自定义的上下拉刷新控件"的压缩包,正是为满足这种需求而设计的。 该压缩包内包含的PullToRefresh文件夹,很可能是实现这一功能的核心代码。在Swift中,我们可以创建自定义...
对于MJRefresh,有开发者已经完成了这个绑定过程,使得我们能够在Xamarin.iOS项目中直接使用MJRefresh的功能。 4. **NuGet**: NuGet是.NET生态中的包管理器,开发者可以使用它来查找、安装、更新和卸载软件包。在...
MJRefresh无感刷新 项目开发中用了MJRefres 刷新控件,每次上拉的时候都有个菊花转,需要下拉一下才能看到下一页的数据。产品提出需求,希望列表往下拉能直接出现下一页的数据,不需要出现加载的动画和等待时间。...
本文将详细介绍如何使用MJRefresh库来实现这一功能。MJRefresh是一个强大的、高度可定制的下拉刷新和上拉加载框架,它提供了丰富的样式和自定义选项。 首先,要将MJRefresh库引入到你的iOS项目中。你可以通过...
在iOS开发中,我们经常需要处理用户界面的多种状态,比如数据加载时的显示、无数据时的提示以及下拉刷新等操作。标题中的“封住的tableViewController基类,集成了DZNEmptyDataSet和MJRefresh”正是针对这些需求的一...
在iOS开发中,下拉刷新与上拉加载更多是常见的功能需求,而MJRefresh库就是一款专为此目的设计的开源组件。它由著名iOS开发者Michael Jason(MJ)创建,旨在简化应用中实现刷新逻辑的复杂度,提供了一套简单易用、...
mj_refresh 上拉、下拉、自定义header、footer、afn子类化案例,博客地址https://blog.csdn.net/dreams_deng/article/details/106691104
因此,如果你正在进行iOS应用开发,尤其是涉及列表刷新功能,不使用MJRefresh可能会错过一个非常实用的工具,确实会有些许遗憾。 综上所述,MJRefresh是一个强大的iOS下拉刷新框架,适用于UITableView和...