Iphone 如何在iOS 5中刷新可重用单元?
我正在脚本中构建一个标识符为“TextCell”的自定义单元格。它是一个平面单元,但是通过代码,我在每个单元中添加了一个文本字段,因为我可以有一个“n”个单元,所以用户可以在每个单元中插入文本。我的问题是,我创建的文本字段似乎一次又一次地在另一个文本字段之上创建自己。我可以这样说,因为我有一个占位符文本,它变得越来越暗 我也在使用ARC。请告诉我,你能提供给我的任何见解都会对我有很大帮助 我将函数的代码附加到单元格中,并在其中添加文本字段:Iphone 如何在iOS 5中刷新可重用单元?,iphone,uitableview,ios5,Iphone,Uitableview,Ios5,我正在脚本中构建一个标识符为“TextCell”的自定义单元格。它是一个平面单元,但是通过代码,我在每个单元中添加了一个文本字段,因为我可以有一个“n”个单元,所以用户可以在每个单元中插入文本。我的问题是,我创建的文本字段似乎一次又一次地在另一个文本字段之上创建自己。我可以这样说,因为我有一个占位符文本,它变得越来越暗 我也在使用ARC。请告诉我,你能提供给我的任何见解都会对我有很大帮助 我将函数的代码附加到单元格中,并在其中添加文本字段: UITableViewCell * cell = [t
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];
每次重复使用单元格时,您都会向先前存在的文本字段集添加另一个
UITextField
。您有两个选择:
1) 将文本字段放在序列图像板的custon表格视图单元中,而不是手动创建。通过使用自定义子类UITableViewCell
,您还可以将文本字段指定给自定义子类中的属性。这有额外的好处,你可以添加一堆其他东西的细胞。然后可以访问该属性,而不是创建新的文本字段
2) 在创建新文本字段之前,请删除“旧”文本字段。您可能必须在所有子视图中搜索UITextField
的实例才能实现这一点,因为您已经在为其他内容使用标记值
第一个肯定是更干净的版本。您不应该将文本字段添加到视图中,而应该将它们添加到内容视图中:
[cell.contentView addSubview:textHolder];
希望有帮助。我正在尝试第一个选项,它看起来很不错,但它给我带来了一些麻烦,因为在故事板中有文本字段意味着它有一个静态标记,所以我无法通过文本化的标记获取当前单元格,因为它是第一响应者(这便于我用键盘滚动). 第二种选择更适合我,但由于我使用ARC,所以我不太清楚如何删除“旧”文本字段。如果你能帮我做这件事,那将意义重大。感谢您迄今为止的所有帮助。在1:您应该能够将文本字段链接到
IBOutlet
,只要您使用UITableViewCell
的自定义子类。当您将该类设置为表视图单元格s类时,您应该能够使用do命令将文本字段拖动到.h文件中来创建属性,而不需要标记。然后,您可以通过子类的属性处理所有事情。在2:您需要通过浏览子视图找到
UITextField`并将其从超级视图中删除(removeFromSuperview
)。如果您没有对文本字段的进一步引用,则应自动取消分配。谢谢@TriPhoenix!!!就是这样!!!我使用了第一个建议,效果很好。我对单元格进行了子类化,并在那里创建了IBOUTLET。我使用本文中的知识来创建自定义子类,但是如果没有您的帮助,我不可能完成它。嘿,谢谢!!!这是问题的一部分,但它并没有完全解决它,我是一个有点noob,我有一些问题,正确地申报细胞@零睡眠