UITableView的基本使用

一、常用方法粘贴

添加协议 

#pragma mark - tableDelegate
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
    return 1;
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return 1;
}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    UKMyStudyRecordCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    return cell;
}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
   return 40;
}

#pragma mark - 选中cell
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    [tableView deselectRowAtIndexPath:indexPath animated:NO];
}

#pragma mark - 懒加载
-(UITableView *)tableView{
    if (!_tableView) {
        CGRect tableViewRect = CGRectZero;
        tableViewRect = CGRectMake(10, Navi_Height+5, self.view.frame.size.width-20, self.view.frame.size.height-Navi_Height-25);
        _tableView = [[UITableView alloc] initWithFrame:tableViewRect style:UITableViewStylePlain];
        _tableView.showsVerticalScrollIndicator = NO;
        if (@available(iOS 11.0, *)) {
            _tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
        } else {
            _tableView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
        }
        _tableView.dataSource = self;
        _tableView.delegate = self;
        _tableView.estimatedRowHeight = 44;
        _tableView.rowHeight = UITableViewAutomaticDimension;
        _tableView.estimatedSectionHeaderHeight = 0;
        _tableView.estimatedSectionFooterHeight = 0;
        _tableView.tableFooterView = [UIView new];
        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        _tableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
        _tableView.backgroundColor = [UIColor clearColor];
        [_tableView registerClass:[UKMyStudyRecordCell class] forCellReuseIdentifier:@"cell"];
    }
    return _tableView;
}

二、上拉刷新,下拉刷新

MJRefresh下拉刷新(上拉加载)使用详解
MJRefresh下拉刷新三方SDK

三、tableView背景下添加背景图和cell同时滑动

//添加ScrollView在TableView下,TableView背景透明contentOffset改变时,更改ScrollView的contentOffset。
- (void)setupTableViewBackView {
    NSLog(@"contentSize=%f",self.tableView.contentSize.height);
     [self preferredContentSize];
    NSLog(@"contentSize=%f",self.tableView.contentSize.height);
    self.scrollView = [[UIScrollView alloc]init];
    self.scrollView.backgroundColor = [UIColor colorWithHexString:@"#FFC158"];
    self.scrollView.frame = CGRectMake(0, Navi_Height, self.view.frame.size.width, self.view.frame.size.height-Navi_Height);
    self.scrollView.contentSize = self.tableView.contentSize;
    self.scrollView.delegate = self;
    [self.view addSubview:self.scrollView];
    
    UIImageView * headBgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, 346 * kScreenHeightRatio)];
    headBgView.image = [UIImage imageNamed:@"顶部bg"];
    [self.scrollView addSubview:headBgView];
    
    UIImageView * bottomBgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, self.tableView.contentSize.height - 298 * kScreenHeightRatio, self.tableView.frame.size.width, 298 * kScreenHeightRatio)];
    bottomBgView.image = [UIImage imageNamed:@"结尾bg"];
    [self.scrollView addSubview:bottomBgView];
    
    if (@available(iOS 11.0, *)) {
        self.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
    } else {
        self.scrollView.contentInset = UIEdgeInsetsMake(-Navi_Height, 0, 0, 0);
    }

    [self.view insertSubview:self.scrollView belowSubview:self.tableView];

}

//同步contentOffset
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGPoint offset = self.tableView.contentOffset;
    [self.scrollView setContentOffset:offset];
}

//刷新总高度tableView.contentSize。
- (CGSize)preferredContentSize
{
    // 获取self.tableView.contentSize,必须先layoutIfNeeded;
    [self.tableView layoutIfNeeded];
    return self.tableView.contentSize;
}

你可能感兴趣的:(UITableView的基本使用)