/************************************************************ * * Hyphenate CONFIDENTIAL * __________________ * Copyright (C) 2016 Hyphenate Inc. All rights reserved. * * NOTICE: All information contained herein is, and remains * the property of Hyphenate Inc. * Dissemination of this information or reproduction of this material * is strictly forbidden unless prior written permission is obtained * from Hyphenate Inc. */ #import "EaseRefreshTableViewController.h" #import "MJRefresh.h" #import "EaseLocalDefine.h" @interface EaseRefreshTableViewController () @property (nonatomic, readonly) UITableViewStyle style; @end @implementation EaseRefreshTableViewController @synthesize rightItems = _rightItems; - (instancetype)initWithStyle:(UITableViewStyle)style { self = [super init]; if (self) { _style = style; } return self; } - (void)viewDidLoad { [super viewDidLoad]; // Uncomment the following line to preserve selection between presentations. if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) { [self setEdgesForExtendedLayout:UIRectEdgeNone]; } if (@available(iOS 11.0, *)) { self.additionalSafeAreaInsets = UIEdgeInsetsMake(0, 0, iPhoneX_BOTTOM_HEIGHT, 0); } _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) style:self.style]; _tableView.accessibilityIdentifier = @"table_view"; _tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; _tableView.delegate = self; _tableView.dataSource = self; _tableView.tableFooterView = self.defaultFooterView; [self.view addSubview:_tableView]; _page = 0; _showRefreshHeader = NO; _showRefreshFooter = NO; _showTableBlankView = NO; } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - setter - (void)setShowRefreshHeader:(BOOL)showRefreshHeader { if (_showRefreshHeader != showRefreshHeader) { _showRefreshHeader = showRefreshHeader; if (_showRefreshHeader) { __weak EaseRefreshTableViewController *weakSelf = self; self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ [weakSelf tableViewDidTriggerHeaderRefresh]; }]; self.tableView.mj_header.accessibilityIdentifier = @"refresh_header"; // header.updatedTimeHidden = YES; } else{ [self.tableView setMj_header:nil]; } } } - (void)setShowRefreshFooter:(BOOL)showRefreshFooter { if (_showRefreshFooter != showRefreshFooter) { _showRefreshFooter = showRefreshFooter; if (_showRefreshFooter) { __weak EaseRefreshTableViewController *weakSelf = self; self.tableView.mj_footer = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{ [weakSelf tableViewDidTriggerFooterRefresh]; }]; self.tableView.mj_footer.accessibilityIdentifier = @"refresh_footer"; } else{ [self.tableView setMj_footer:nil]; } } } - (void)setShowTableBlankView:(BOOL)showTableBlankView { if (_showTableBlankView != showTableBlankView) { _showTableBlankView = showTableBlankView; } } #pragma mark - getter - (NSMutableArray *)dataArray { if (_dataArray == nil) { _dataArray = [NSMutableArray array]; } return _dataArray; } - (NSMutableDictionary *)dataDictionary { if (_dataDictionary == nil) { _dataDictionary = [NSMutableDictionary dictionary]; } return _dataDictionary; } - (UIView *)defaultFooterView { if (_defaultFooterView == nil) { _defaultFooterView = [[UIView alloc] init]; } return _defaultFooterView; } #pragma mark - Table view data source - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { // Return the number of sections. return 1; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { // Return the number of rows in the section. return 0; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"UITableViewCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; // Configure the cell... return cell; } #pragma mark - Table view delegate - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return KCELLDEFAULTHEIGHT; } #pragma mark - public refresh - (void)autoTriggerHeaderRefresh { if (self.showRefreshHeader) { [self tableViewDidTriggerHeaderRefresh]; } } - (void)tableViewDidTriggerHeaderRefresh { } - (void)tableViewDidTriggerFooterRefresh { } - (void)tableViewDidFinishTriggerHeader:(BOOL)isHeader reload:(BOOL)reload { __weak EaseRefreshTableViewController *weakSelf = self; dispatch_async(dispatch_get_main_queue(), ^{ if (reload) { [weakSelf.tableView reloadData]; } if (isHeader) { [weakSelf.tableView.mj_header endRefreshing]; } else{ [weakSelf.tableView.mj_footer endRefreshing]; } }); } @end