MJTableViewController.m 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. //
  2. // MJTableViewController.m
  3. // 快速集成下拉刷新
  4. //
  5. // Created by mj on 14-1-3.
  6. // Copyright (c) 2014年 itcast. All rights reserved.
  7. //
  8. /*
  9. 具体用法:查看MJRefresh.h
  10. */
  11. #import "MJTableViewController.h"
  12. #import "MJRefresh.h"
  13. NSString *const MJTableViewCellIdentifier = @"Cell";
  14. /**
  15. * 随机数据
  16. */
  17. #define MJRandomData [NSString stringWithFormat:@"随机数据---%d", arc4random_uniform(1000000)]
  18. @interface MJTableViewController ()
  19. /**
  20. * 存放假数据
  21. */
  22. @property (strong, nonatomic) NSMutableArray *fakeData;
  23. @end
  24. @implementation MJTableViewController
  25. #pragma mark - 初始化
  26. /**
  27. * 数据的懒加载
  28. */
  29. - (NSMutableArray *)fakeData
  30. {
  31. if (_fakeData == nil) {
  32. self.fakeData = [NSMutableArray array];
  33. for (int i = 0; i<12; i++) {
  34. [self.fakeData addObject:MJRandomData];
  35. }
  36. }
  37. return _fakeData;
  38. }
  39. - (void)viewDidLoad
  40. {
  41. [super viewDidLoad];
  42. // 1.注册cell
  43. [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:MJTableViewCellIdentifier];
  44. // 2.集成刷新控件
  45. [self setupRefresh];
  46. }
  47. /**
  48. 为了保证内部不泄露,在dealloc中释放占用的内存
  49. */
  50. - (void)dealloc
  51. {
  52. NSLog(@"MJTableViewController--dealloc---");
  53. }
  54. /**
  55. * 集成刷新控件
  56. */
  57. - (void)setupRefresh
  58. {
  59. // 1.下拉刷新(进入刷新状态就会调用self的headerRereshing)
  60. [self.tableView addHeaderWithTarget:self action:@selector(headerRereshing)];
  61. #warning 自动刷新(一进入程序就下拉刷新)
  62. [self.tableView headerBeginRefreshing];
  63. // 2.上拉加载更多(进入刷新状态就会调用self的footerRereshing)
  64. [self.tableView addFooterWithTarget:self action:@selector(footerRereshing)];
  65. }
  66. #pragma mark 开始进入刷新状态
  67. - (void)headerRereshing
  68. {
  69. // 1.添加假数据
  70. for (int i = 0; i<5; i++) {
  71. [self.fakeData insertObject:MJRandomData atIndex:0];
  72. }
  73. // 2.2秒后刷新表格UI
  74. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  75. // 刷新表格
  76. [self.tableView reloadData];
  77. // (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态
  78. [self.tableView headerEndRefreshing];
  79. });
  80. }
  81. - (void)footerRereshing
  82. {
  83. // 1.添加假数据
  84. for (int i = 0; i<5; i++) {
  85. [self.fakeData addObject:MJRandomData];
  86. }
  87. // 2.2秒后刷新表格UI
  88. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  89. // 刷新表格
  90. [self.tableView reloadData];
  91. // (最好在刷新表格后调用)调用endRefreshing可以结束刷新状态
  92. [self.tableView footerEndRefreshing];
  93. });
  94. }
  95. #pragma mark - Table view data source
  96. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  97. {
  98. return self.fakeData.count;
  99. }
  100. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  101. {
  102. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MJTableViewCellIdentifier forIndexPath:indexPath];
  103. cell.textLabel.text = self.fakeData[indexPath.row];
  104. return cell;
  105. }
  106. @end