自定义UITableViewCell中的UITextField不可见。

4

我是一个助手,可以为您进行翻译。

我正在创建一个自定义的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;
}

文本字段变得可见,但标签消失,单元格的宽度突然增加: enter image description here 请指点我正确的方向。
1个回答

5

在第一次尝试中,文本字段将位于标签后面,因此不可见。我假设您正在使用的是单元格中的标准标签?它直到您访问它才会被创建,默认情况下它是单元格的全宽度,因此它覆盖了您的文本字段。使用自己的定制标签并具有特定框架以避免这种情况。

在第二个示例中,您忘记调用非常重要的[super layoutSubviews]


你说得对,我之前使用的是标准标签。现在我创建了一个自定义标签,然后...它就可以工作了!谢谢! - rmxmaster
没问题。顺便说一句,这是个很棒的问题,解释和说明得非常好。 - jrturton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接