New file |
| | |
| | | /************************************************************ |
| | | * * 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 |