我有一个名为totalWins
的数组,里面有一个名为winningNumbers
的数组。在其中有70个数字我需要在UITableView单元格中显示。
我已经将UITaableViewCell子类化并创建了一些UITextField
个出口。
做旧的时尚方式:
NSArray *winningNumbers = [[_currentSearchResults objectAtIndex:indexPath.row]objectForKey:@"winningNumbers"];
cell.txtFld1.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:0]];
cell.txtFld2.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:1]];
....
....
效果很好。我试图节省一些编码时间并做到这一点:(当然在设置了textfields标签之后)
for(int i=0;i<70;i++)
{
UITextField *tempField = (UITextField *) [self.view viewWithTag: 777+i];
tempField.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:i]];
}
问题在于,由于单元格的重用,在滚动表格视图时数字会混乱。在没有写cell.txtFld1.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:0]];
70次的情况下完成上述任务的首选方法是什么?
答案 0 :(得分:1)
使用 [cell.contentView viewWithTag:777 + i] 而不是 self.view 。你的解决方案还可以。
答案 1 :(得分:1)
我还没有尝试过,但可能会有效:
for (id subview in [cell.contentView subviews]) {
if([subview isKindOfClass:[UITextField class]]) {
UITextField *textfield = (UITextField*)subview;
textfield.text = [NSString stringWithFormat:@"%@",[winningNumbers objectAtIndex:(textfield.tag-777)]];
}
}
希望这有帮助。
答案 2 :(得分:0)
子类UITableViewCell并创建一个UITextFields数组。
@interface YourCell: UITableViewCell
@property (nonatomic, readonly) NSArray *textfields;
@end
在ivar备份textfields
属性中存储对文本字段的引用。
然后你可以做
NSArray *textfields = cell.textfields;
for (int i = 0; i < textfields.count; i++)
{
UITextfield *field = [textfields objectAtIndex:i];
// set textfield's text
}
答案 3 :(得分:0)
只需删除所有创建的文本字段,然后每次都创建它们。
for(UIView *view in cell.contentView.subviews)
{
[view removeFromSuperView];
}