在编写UITableViewCell
的自定义子类时,我发现结果适用于普通样式UITableView
的矩形单元格,但对于分组中的舍入单元格根本不起作用风格的桌子。
有没有办法可靠地将UITableViewCell
子类化为绘制适用于分组样式表的单元格? (不使用Interface Builder。)
答案 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,那就相同了。