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


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的作用不僅僅局限於此,還用更多的功能等待你的發現。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM