自定义 UITableViewCell

自定义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"];

  就这样,当然如果你愿意还可以重载更多方法来完成更伟大的功能!

 

posted on   小浪鼓  阅读(403)  评论(0编辑  收藏  举报

编辑推荐:
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 后端思维之高并发处理方案
阅读排行:
· BotSharp + MCP 三步实现智能体开发
· BotSharp 5.0 MCP:迈向更开放的AI Agent框架
· 5. RabbitMQ 消息队列中 Exchanges(交换机) 的详细说明
· 【ESP32】两种模拟 USB 鼠标的方法
· 设计模式脉络
< 2013年1月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

导航

统计

点击右上角即可分享
微信分享提示