自定义UITableViewCell中的UITextField不可见

rmx*_*ter 4 uitableview uitextfield ios

我正在创建一个自定义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;
}
Run Code Online (Sandbox Code Playgroud)

导致隐形文本字段:

隐形字段的屏幕截图

但是,如果我选择此单元格,文本字段将变为可见:

在此输入图像描述

如果我实施

- (void)layoutSubviews
{
     self.textField.frame = CGRectMake(59, 11, 399, 21);

     /* thus text field init method becomes initWithFrame:CGRectZero;
}
Run Code Online (Sandbox Code Playgroud)

文本字段变得可见,但标签消失,单元格的宽度突然增加:

在此输入图像描述

请指出正确的方向.

jrt*_*ton 5

首次尝试时,文本字段将位于标签后面,因此不可见.我假设这是你正在使用的单元格的标准标签?在您访问它之前不会创建它,默认情况下它是单元格的整个宽度,因此它覆盖了您的文本字段.使用您自己的自定义标签和特定框架来避免这种情况.

在第二个例子中,你忘了打电话[super layoutSubviews]哪个非常重要.