UITextField 占位符问题
Posted
技术标签:
【中文标题】UITextField 占位符问题【英文标题】:UITextField placeholder issue 【发布时间】:2013-11-14 20:41:00 【问题描述】:在我的应用程序中,您可以选择第一部分(第 0 部分)的两行之一。当您选择一个行时,第 2 节(第 1 节)中的行将重新加载。当您现在多次更改选择时,占位符不会消失。 (当您将选择更改 1 或 2 次时,占位符会消失)。我做错了什么?
这是我在单元格中创建 UITextField 的方法:
if (!self.selectedType)
NSString *string = [NSString stringWithFormat:@"%@: ", self.LessonToDisplay];
int where = (string.length*5)+35;
self.textField = [[UITextField alloc]initWithFrame:CGRectMake(where, 10, 150, 25)];
self.textField.tag = 42;
self.textField.font = [UIFont fontWithName:@"Helvetica-Neue" size:16];
self.textField.textColor = [UIColor blackColor];
if([self.textField.text isEqualToString:@""])
self.textField.placeholder = @"Beschreibung";
[cell.contentView addSubview:self.textField];
cell.textLabel.text = [NSString stringWithFormat:@"%@: ", self.LessonToDisplay];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
else
NSString *string = [NSString stringWithFormat:@"%@: Prüfung", self.LessonToDisplay];
int where = (string.length*5.8)+57;
self.textField2 = [[UITextField alloc]initWithFrame:CGRectMake(where, 10, 150, 25)];
self.textField2.tag = 43;
self.textField2.font = [UIFont fontWithName:@"Helvetica-Neue" size:16];
self.textField2.textColor = [UIColor blackColor];
if([self.textField2.text isEqualToString:@""])
self.textField2.placeholder = @"Beschreibung";
[cell.contentView addSubview:self.textField2];
cell.textLabel.text = [NSString stringWithFormat:@"%@: Prüfung ", self.LessonToDisplay];
cell.selectionStyle = UITableViewCellSelectionStyleNone;
【问题讨论】:
细胞被重复使用。随着单元格被重用,您可能会一遍又一遍地添加文本字段。确保每个单元格只添加一次文本字段。 我怎样才能做到这一点? 如果它已经存在就不要添加它。简单的代码逻辑。 @rmaddy 感谢您的帮助,现在它正在按照 Corey 的建议工作。 【参考方案1】:离开@rmaddy 的评论,单元格被重复使用。因此,将子视图添加到单元格内容视图只会从之前的使用中堆叠。您可以在添加其他子视图之前从单元格 contentView 中删除所有子视图:
for (UIView *subview in cell.contentView.subviews)
[subview removeFromSuperview];
【讨论】:
以上是关于UITextField 占位符问题的主要内容,如果未能解决你的问题,请参考以下文章
如何调整 UITextField 占位符文本以适合 UITextField 宽度?