使用xib自定义UIView和UITableViewCell以方便布局的方法

来源:互联网 发布:淘宝拍a发b平台荷塘 编辑:程序博客网 时间:2024/05/19 23:25

UIView:

1. 首先,新建一个类,继承自UIView。
2. 创建一个空的xib文件,文件名最好和前面类名一样。在xib中添加一个View,把加载类改成第一步继承的类。
3. 在xib中添加相应的控件,在第一步创建的类中添加相应的IBOutlet,并且连上相应的控件。
4. 使用如下:

NSArray *nib = [[NSBundle mainBundle] loadNibNamed:@"xib的名字" owner:self options:nil];
类名 *View = [nib objectAtIndex:0];

注意:在使用View的时候,如果没有哪个操作具有retain的功能,最好显示地把View retain一次,如果有addObject,addSubview之类的操作则不用。反正记住一点,这个View不是用alloc、copy等创建的,是个自动释放的对象,要特意保留一下它,要不然在以后用到的时候会出错。

UITableViewCell:

新建一个UIViewController,命名为CellViewController, 修改这个UIViewController的基类,使他从UITableViewCell继承。
打开CellViewController的xib 文件。删除xib中的view,添加一个UITableViewCell到xib窗口中,在xib中修改刚刚添加的UITableViewCell的加载类为CellViewController。可以在xib中加入控件。连上IBOutlet。
.h
1 @interface CellViewController : UITableViewCell {
2 IBOutlet UILabel *lb;
3 }
4 @property(nonatomic, retain)UILabel *lb;
5 @end

.m

1 @implementation CellViewController
2 @synthesize lb;
3 @end

使用的时候,在cellForRowAtIndexPath函数中如下:

1 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
2 CellViewController *cell;
3 static NSString * CellIdentifier = @"CustomAccountStateCellViewControllerIdentifier";
4 cell = (CellViewController *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
5 if( cell == nil )
6 {
7 NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"CellViewController" owner:self options:nil] ;
8 cell = [nib objectAtIndex:0];
9 }
10
11 cell.lb.text = @"ABC";
12 return cell;
13 }

当然要添加自定义Cell的头文件到这里来。
运行程序。