自定义 UITableViewCell 中的 UITextField 不可见
Posted
技术标签:
【中文标题】自定义 UITableViewCell 中的 UITextField 不可见【英文标题】:UITextField in custom UITableViewCell not visible 【发布时间】:2012-09-22 07:00:45 【问题描述】:我正在创建一个带有一个标签和一个文本字段的自定义 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;
文本字段变得可见,但标签消失并且单元格的宽度突然增加:
请指点我正确的方向。
【问题讨论】:
【参考方案1】:第一次尝试时,文本字段将位于标签后面,因此不可见。我假设这是您正在使用的单元格的标准标签?在您访问它之前不会创建它,默认情况下它是单元格的整个宽度,因此它会覆盖您的文本字段。使用您自己的带有特定框架的自定义标签来避免这种情况。
在第二个示例中,您忘记调用[super layoutSubviews]
,这非常重要。
【讨论】:
你说得对,我使用的是标准标签。现在我制作了一个自定义标签,而且……它确实有效!谢谢! 没问题。顺便说一句,这个问题很好,解释和说明都很好。以上是关于自定义 UITableViewCell 中的 UITextField 不可见的主要内容,如果未能解决你的问题,请参考以下文章
在 Storyboard 中设计的自定义 UITableViewCell 中的自定义 UIView
ios开发UI篇—使用纯代码自定义UItableviewcell实现一个简单的微博界面布局
iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局
将自定义 UITableViewCell 从 nib 加载到 Swift 中的 UIViewController