1. 程式人生 > >IOS xib在tableview上的簡單應用(通過xib自定義cell)

IOS xib在tableview上的簡單應用(通過xib自定義cell)

make aso eat 常用 last creat path ins div

UITableView是一種常用的UI控件,在實際開發中,由於原生api的局限,自定義UITableViewCell十分重要,自定義cell可以通過代碼,也可以通過xib。

這篇隨筆介紹的是通過xib自定義cell。

首先通過gif介紹如何創建xib。

技術分享

然後實現代碼部分,要註意的是實現代碼的同時要使代碼與xib相關聯。-如圖

技術分享

下面便是代碼,一些解釋我在代碼中註釋了。

ViewController.m

技術分享
//
//  ViewController.m
//  CX-Xib在tableView中的簡單應用
//
//  Created by ma c on 16/3/18.
//  Copyright ? 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"
#import "CXTableViewCell.h"

static NSString * identifier = @"cxCellID";

@interface ViewController()<UITableViewDataSource,UITableViewDelegate>

@property (nonatomic, strong) UITableView * tableView;

@end

@implementation ViewController
#pragma mark - set_and_get

-(UITableView *)tableView{
    
    if (!_tableView) {
        
        _tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 20, CGRectGetWidth(self.view.frame), 300) style:UITableViewStylePlain];
        
        _tableView.delegate = self;
        
        _tableView.dataSource = self;
        
        _tableView.rowHeight = 100;
        
        [_tableView registerNib:[UINib nibWithNibName:@"tableViewCellXib" bundle:nil] forCellReuseIdentifier:identifier];
        
    }
    return _tableView;
}

#pragma mark - life

- (void)viewDidLoad {
    [super viewDidLoad];
    
    [self.view addSubview:self.tableView];

}
#pragma mark - deleDate
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    return 1;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    
    CXTableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    
    cell = [[[UINib nibWithNibName:@"tableViewCellXib" bundle:nil]instantiateWithOwner:self options:nil]lastObject];
    
    return cell;
    
}


@end
技術分享

CXTableViewCell.m

技術分享
//
//  CXTableViewCell.m
//  CX-Xib在tableView中的簡單應用
//
//  Created by ma c on 16/3/18.
//  Copyright ? 2016年 xubaoaichiyu. All rights reserved.
//

#import "CXTableViewCell.h"

@interface CXTableViewCell ()
//這裏要先寫空間,然後把xib上的控件和代碼相連
@property (nonatomic, weak)IBOutlet UILabel * upLabel;
@property (nonatomic, weak)IBOutlet UILabel * downLable;
@property (nonatomic, weak)IBOutlet UIImageView * CXimageView;

@end

@implementation CXTableViewCell

-(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        
        //不要把控件add到view上
        //add到contentView才是你最正確的選擇
        [self.contentView addSubview:self.CXimageView];
        
        [self.contentView addSubview:self.upLabel];
        
        [self.contentView addSubview:self.downLable];
    }
    return self;
}
//采用xib自定義cell xib上的信息要放在這裏更新
- (void)awakeFromNib {
 
    self.CXimageView.image = [UIImage imageNamed:@"caishen.jpg"];
    self.upLabel.text = @"恭喜發財";
    self.downLable.text = @"財源廣進";

    
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
    [super setSelected:selected animated:animated];

}

@end
技術分享

在實際開發中xib的作用不僅僅局限於此,還用更多的功能等待你的發現。

IOS xib在tableview上的簡單應用(通過xib自定義cell)