我正在创建一个自定义的UITableViewCell(通过子类化编程),带有一个标签和一个文本字段。
此代码
#import "TextCell.h"
@implementation TextCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
UITextField *subjectField = [[UITextField alloc] initWithFrame:CGRectMake(59, 11, 399, 21)];
subjectField.font = [UIFont systemFontOfSize:17];
subjectField.placeholder = @"(placeholder)";
[self.contentView addSubview:subjectField];
self.textField = subjectField;
}
return self;
}
会产生不可见的文本字段:
但如果我选择此单元格,文本字段将变为可见:
如果我实施
- (void)layoutSubviews
{
self.textField.frame = CGRectMake(59, 11, 399, 21);
/* thus text field init method becomes initWithFrame:CGRectZero;
}
文本字段变得可见,但标签消失,单元格的宽度突然增加:
请指出正确的方向。
答案 0 :(得分:5)
首次尝试时,文本字段将位于标签后面,因此不可见。我假设您使用的单元格中的标准标签是什么?在您访问它之前它不会被创建,默认情况下它是单元格的整个宽度,因此它覆盖了您的文本字段。使用您自己的自定义标签和特定框架来避免这种情况。
在第二个例子中,您忘记致电[super layoutSubviews]
,这非常重要。