0

我有一个名为的数组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]];
....
....

效果很好。我试图节省一些编码时间并这样做:(当然在设置文本字段标签之后)

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 次的情况下完成上述任务的首选方法是什么?

4

4 回答 4

1

使用[cell.contentView viewWithTag: 777+i]代替self.view。你的解决方案没问题。

于 2013-07-11T12:15:49.740 回答
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)]];
    }
}

希望这可以帮助。

于 2013-07-11T12:52:13.867 回答
0

只需删除所有创建的文本字段并每次创建它们。

 for(UIView *view in cell.contentView.subviews)
{
    [view removeFromSuperView];
}
于 2013-07-11T12:40:23.950 回答
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
}
于 2013-07-11T12:17:06.060 回答