YMGuildManagementListViewController.m 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143
  1. //
  2. // YMGuildManagementListViewController.m
  3. // JXPagerViewExample-OC
  4. //
  5. // Created by jiaxin on 2019/12/30.
  6. // Copyright © 2019 jiaxin. All rights reserved.
  7. //
  8. #import "YMGuildManagementListViewController.h"
  9. //#import "DetailViewController.h"
  10. #import <MJRefresh/MJRefresh.h>
  11. #import "UIWindow+JXSafeArea.h"
  12. @interface YMGuildManagementListViewController () <UITableViewDataSource, UITableViewDelegate>
  13. @property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView);
  14. @end
  15. @implementation YMGuildManagementListViewController
  16. - (void)dealloc {
  17. NSLog(@"YMGuildManagementListViewController dealloced");
  18. }
  19. - (void)viewDidLoad {
  20. [super viewDidLoad];
  21. _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain];
  22. self.tableView.backgroundColor = [UIColor whiteColor];
  23. self.tableView.tableFooterView = [UIView new];
  24. self.tableView.dataSource = self;
  25. self.tableView.delegate = self;
  26. [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];
  27. //列表的contentInsetAdjustmentBehavior失效,需要自己设置底部inset
  28. self.tableView.contentInset = UIEdgeInsetsMake(0, 0, UIApplication.sharedApplication.keyWindow.jx_layoutInsets.bottom, 0);
  29. [self.view addSubview:self.tableView];
  30. __weak typeof(self)weakSelf = self;
  31. if (self.isNeedHeader) {
  32. self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{
  33. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  34. [weakSelf.tableView.mj_header endRefreshing];
  35. });
  36. }];
  37. }
  38. if (self.isNeedFooter) {
  39. self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{
  40. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  41. [weakSelf.dataSource addObject:@"加载更多成功"];
  42. [weakSelf.tableView reloadData];
  43. [weakSelf.tableView.mj_footer endRefreshing];
  44. });
  45. }];
  46. }
  47. [self beginFirstRefresh];
  48. }
  49. - (void)viewDidLayoutSubviews {
  50. [super viewDidLayoutSubviews];
  51. self.tableView.frame = self.view.bounds;
  52. }
  53. - (void)beginFirstRefresh {
  54. if (!self.isHeaderRefreshed) {
  55. [self beginRefreshImmediately];
  56. }
  57. }
  58. - (void)beginRefreshImmediately {
  59. if (self.isNeedHeader) {
  60. [self.tableView.mj_header beginRefreshing];
  61. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  62. self.isHeaderRefreshed = YES;
  63. [self.tableView reloadData];
  64. [self.tableView.mj_header endRefreshing];
  65. });
  66. }else {
  67. self.isHeaderRefreshed = YES;
  68. [self.tableView reloadData];
  69. }
  70. }
  71. #pragma mark - UITableViewDataSource, UITableViewDelegate
  72. - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
  73. if (!self.isHeaderRefreshed) {
  74. return 0;
  75. }
  76. return self.dataSource.count;
  77. }
  78. - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  79. UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
  80. cell.textLabel.text = self.dataSource[indexPath.row];
  81. return cell;
  82. }
  83. - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  84. return 50;
  85. }
  86. - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
  87. // DetailViewController *detailVC = [[DetailViewController alloc] init];
  88. // detailVC.infoString = self.dataSource[indexPath.row];
  89. // [self.navigationController pushViewController:detailVC animated:YES];
  90. }
  91. - (void)scrollViewDidScroll:(UIScrollView *)scrollView {
  92. !self.scrollCallback ?: self.scrollCallback(scrollView);
  93. }
  94. #pragma mark - JXPagingViewListViewDelegate
  95. - (UIView *)listView {
  96. return self.view;
  97. }
  98. - (UIScrollView *)listScrollView {
  99. return self.tableView;
  100. }
  101. - (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback {
  102. self.scrollCallback = callback;
  103. }
  104. - (void)listWillAppear {
  105. NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd));
  106. }
  107. - (void)listDidAppear {
  108. NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd));
  109. }
  110. - (void)listWillDisappear {
  111. NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd));
  112. }
  113. - (void)listDidDisappear {
  114. NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd));
  115. }
  116. @end