如何可靠地将UITableViewCell子类化为UITableView分组?

时间:2009-10-17 11:18:48

标签: iphone uitableview subclass

在编写UITableViewCell的自定义子类时,我发现结果适用于普通样式UITableView的矩形单元格,但对于分组中的舍入单元格根本不起作用风格的桌子。

有没有办法可靠地将UITableViewCell子类化为绘制适用于分组样式表的单元格? (不使用Interface Builder。)

4 个答案:

答案 0 :(得分:9)

答案是否可以像在[super layoutSubviews]子类的UITableViewCell方法中首次调用layoutSubviews一样简单?

这是我的代码。

首先,我创建UITextField并将其添加到contentView方法中的initWithStyle:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        inputField = [[UITextField alloc] initWithFrame:CGRectZero];
        [self.contentView addSubview:inputField];
        inputField.borderStyle = UITextBorderStyleLine;
        [inputField release];
    }
    return self;
}

然后在layoutSubviews中,我得到了这个:

-(void)layoutSubviews
{
    inputField.frame = CGRectMake(5, 5, 100, 20);
}

使用该代码,文本字段距屏幕左侧5px,当然,当它处于分组模式时,表格单元格左侧是5px。换句话说,表视图单元格的OUTSIDE。不好。

使用此代码,inputField放置在单元格右侧5px,就像我希望的那样:

-(void)layoutSubviews
{
    [super layoutSubviews]; // the magic line
    inputField.frame = CGRectMake(5, 5, 100, 20);
}

我可能完全误解了你遇到的问题!

埃里克

答案 1 :(得分:8)

我以前在UITableViewCell子类中遇到很多问题,但后来我就停止了子类化。 将子视图添加到contentView的{​​{1}}属性似乎可以在我遇到的任何实例中完成相同的操作,所以我只是在UITableViewCell内执行此操作。

这是一个具有标题和值的示例:

UITableViewController

答案 2 :(得分:2)

我也注意到了这个问题。我的解决方法是让我的表格单元格更小(300宽度而不是320)。这不是一个很好的解决方案,但效果很好。

我不相信你在“分组”模式下可以个别地删除表格视图插入。我可能错了!

答案 3 :(得分:-1)

你有什么问题?在drawRect中,您将获得一个rect,并知道您的总大小 - 只需符合该​​空间。如果你正在使用layoutSubviews,那就相同了。