我正在故事板中使用标识符“TextCell”构建自定义单元格。它是一个平面单元,但是通过代码,我将每个单元格添加一个文本字段,因为我可以有一个“n”个单元格,因此用户可以在每个单元格中插入文本。我的问题是,我创建的文本域似乎在一个又一个地重复创建自己。我可以这样说,因为我有一个占位符文本,它会变得更暗更暗。
我也在使用ARC。请您提供给我的任何见解可以帮助我很多。
我附加了函数的代码,我将文本字段添加到单元格中:
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"TextCell"];
//create text field inside cell and init it with the default settings
UITextField * textHolder = [[UITextField alloc] initWithFrame:CGRectMake(18, 10, 300, 44)];
[textHolder setPlaceholder:[cellsText objectAtIndex:indexPath.row]];
//[textHolder setValue:[UIColor blackColor] forKeyPath:@"_placeholderLabel.textColor"];
[textHolder setFont:[UIFont fontWithName:@"HelveticaNeue-Regular" size:16]];
[textHolder setTextColor:[UIColor blackColor]];
[textHolder setTextAlignment:UITextAlignmentLeft];
textHolder.tag = FIELD_PREFIX + indexPath.row;
[textHolder setDelegate:self];
[[NSBundle mainBundle] loadNibNamed:@"accessoryView" owner:self options:nil];
[textHolder setInputAccessoryView:accessoryView];
[cell addSubview:textHolder];
//set keyboard to type passwords
[textHolder setSecureTextEntry:YES];
答案 0 :(得分:3)
每次重复使用单元格时,都会将另一个UITextField
添加到预先存在的文本字段集中。您有两种选择:
1)将文本字段放在故事板中的custon表视图单元格中,而不是手动创建。通过使用UITableViewCell
的自定义子类,您还可以将自己的文本字段分配给自定义子类中的属性。这有额外的好处,你可以添加一堆其他东西到单元格。然后,您可以访问该属性,而不是创建新的文本字段。
2)在创建新文本字段之前删除“旧”文本字段。您可能必须搜索所有子视图以查找UITextField
的实例才能实现此目的,因为您已经将标记值用于其他内容。
第一个绝对是更清洁的版本。
答案 1 :(得分:1)
您不应该将文本字段添加到视图中,您应该将它们添加到内容视图中:
[cell.contentView addSubview:textHolder];
希望它有所帮助。