0

という配列がtotalWinsあり、その中に という配列がありますwinningNumbers。その中には、UITableView セルに表示する必要がある 70 個の数字があります。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

私はこれを試していませんが、うまくいくかもしれません:

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 に答える