PageModel.m 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. //
  2. // PageModel.m
  3. // IBOSS
  4. //
  5. // Created by guan hong hou on 2017/8/22.
  6. // Copyright © 2017年 elongtian. All rights reserved.
  7. //
  8. // 功能描述:分页模型
  9. #import "PageModel.h"
  10. @interface PageModel (){
  11. NSInteger page; // 当前页
  12. NSInteger totalPages; // 总页数
  13. NSInteger pageRecorders;// 每页数据数
  14. NSInteger totalRows; // 总数据数
  15. NSInteger pageStartRow;// 每页的起始数
  16. NSInteger pageEndRow; // 每页显示数据的终止数
  17. Boolean hasNextPage; // 是否有下一页
  18. Boolean hasPreviousPage; // 是否有前一页
  19. NSMutableArray *dataList;//数据列表
  20. }
  21. @end
  22. @implementation PageModel
  23. /**
  24. 初始化分页数组和记录数
  25. @param dataArray <#dataArray description#>
  26. @param recorders <#recorders description#>
  27. */
  28. -(void)setPage:(NSMutableArray*)dataArray pageRecorders:(NSInteger)recorders{
  29. page=0;
  30. totalPages = 0;
  31. totalRows = 0;
  32. pageStartRow = 0;
  33. pageEndRow = 0;
  34. hasNextPage = NO;
  35. hasPreviousPage = NO;
  36. pageRecorders = recorders;
  37. dataList= dataArray;
  38. totalRows = dataList.count;
  39. hasPreviousPage = false;
  40. if ((totalRows % pageRecorders) == 0) {
  41. totalPages = totalRows / pageRecorders;
  42. } else {
  43. totalPages = totalRows / pageRecorders + 1;
  44. }
  45. if (page >= totalPages) {
  46. hasNextPage = false;
  47. } else {
  48. hasNextPage = true;
  49. }
  50. if (totalRows < pageRecorders) {
  51. pageStartRow = 0;
  52. pageEndRow = totalRows;
  53. } else {
  54. pageStartRow = 0;
  55. pageEndRow = pageRecorders;
  56. }
  57. }
  58. /**
  59. 处理页数
  60. */
  61. -(void)disposePage{
  62. if (page == 0) {
  63. page = 1;
  64. }
  65. if ((page - 1) > 0) {
  66. hasPreviousPage = true;
  67. } else {
  68. hasPreviousPage = false;
  69. }
  70. if (page >= totalPages) {
  71. hasNextPage = false;
  72. } else {
  73. hasNextPage = true;
  74. }
  75. }
  76. /**
  77. 获取分页的子列表
  78. @param pageNumber <#pageNumber description#>
  79. @return <#return value description#>
  80. */
  81. -(NSArray*)getObjects:(NSInteger)pageNumber{
  82. [self setPage:pageNumber];
  83. [self disposePage];
  84. if (page * pageRecorders < totalRows) {// 判断是否为最后一页
  85. pageEndRow = page * pageRecorders;
  86. pageStartRow = pageEndRow - pageRecorders;
  87. } else {
  88. pageEndRow = totalRows;
  89. pageStartRow = pageRecorders * (totalPages - 1);
  90. }
  91. NSArray *objects = nil;
  92. if (dataList!=nil&&dataList.count>0) {
  93. NSInteger recorders= pageEndRow-pageStartRow;
  94. objects = [dataList subarrayWithRange:NSMakeRange(pageStartRow,recorders)];
  95. }
  96. return objects;
  97. }
  98. /**
  99. 设置页号
  100. @param pageNumber <#pageNumber description#>
  101. */
  102. - (void)setPage:(NSInteger)pageNumber {
  103. page = pageNumber;
  104. }
  105. @end