您的位置:首页 > 产品设计 > UI/UE

自定义 UITableViewCell

2013-01-11 00:05 260 查看
自定义Cell当然很简单,subclass UITableViewCell,分2种,一种自己定义Nib文件,一种不使用Nib文件:

当然依照个人选择,我喜欢少写代码,使用Nib文件。

1. 添加文件继承自 UITableViewCell。

2. 使用Nib文件。添加User Interface -> View 文件,IB拖拽一个TableViewCell控件(删除原来的View)。

3. 对自定义的Cell进行自定义,当然像你设计的那样的设计。

4. 这里我主要说在 UITableView的delegate方法中的使用

1)不使用nib文件,当然很简单了

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"XXXCell"];
if (cell == nil) {
cell = [[ActivityCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}

return cell;
}


2)使用Nib文件

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";

ActivityCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {

NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"XXXCell" owner:nil options:nil];

for (UIView *view in views) {
if([view isKindOfClass:[UITableViewCell class]])
{
cell = (XXXCell*)view;
}
}
}

return cell;
}


好了,其实这里我们已经完成了,但是看这个cellForRow中的代码有点多,还有循环,乱糟糟,那就拿出去吧!(使用Nib文件的情况下)

1 .h 文件

#import <UIKit/UIKit.h>

@interface XXXCell : UITableViewCell {
}

+ (BBCell *)cellFromNibNamed:(NSString *)nibName;

@end


2 .m文件

#import "XXXCell.h"

@implementation BBCell

+ (BBCell *)cellFromNibNamed:(NSString *)nibName {
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:nibName owner:self options:NULL];
NSEnumerator *nibEnumerator = [nibContents objectEnumerator];
XXXCell *customCell = nil;
NSObject* nibItem = nil;
while ((nibItem = [nibEnumerator nextObject]) != nil) {
if ([nibItem isKindOfClass:[XXXCell class]]) {
customCell = (XXXCell *)nibItem;
break;
}
}
return customCell;
}

@end


3. 使用,在代理方法中

cell = [[[XXXCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"XXXCell"] autorelease];


替换

cell = (XXXDetailCell *)[XXXCell cellFromNibNamed:@"XXXCell"];


就这样,当然如果你愿意还可以重载更多方法来完成更伟大的功能!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: