2

私はiPhoneアプリケーションを実装しています。これはUItableviewです。2つのセクションがあります。セクションIIのすべてのセルに3つのラベルが追加され、セルに追加するときにこれらの3つのラベルにタグ1、2、3が与えられました。セクション I のすべてのセルから label3 の値を取得し、すべての float 値を追加して、セクション II にある別のラベルに合計を表示したいと思います。異なるセルの label3 には異なるタグを付ける必要があることを読みました(tag-3 のラベル)どうすればよいか教えてください.label3 に float 値があります.すべての値を追加し、セクション II に結果を表示したい.参考にしてください.

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{
NSString* curItem = [self.finalItems objectAtIndex:indexPath.row];
NSString* curQuantity = [self.finalPrices objectAtIndex:indexPath.row];
NSString* priceStr = [self fetchDishRecordswithpredicate:curItem];
NSMutableString* priceValStr = [NSMutableString stringWithString:priceStr];
[priceValStr replaceCharactersInRange:NSMakeRange(0, 1) withString:@""];
float totalPrice = [curQuantity floatValue]*[priceValStr floatValue];
UILabel *lblTemp1 = (UILabel *)[cell viewWithTag:1];
UILabel *lblTemp2 = (UILabel *)[cell viewWithTag:2];
UILabel *lblTemp3 = (UILabel *)[cell viewWithTag:3];
switch (indexPath.section) {
    case 0: {
    lblTemp1.text = curItem;
    lblTemp2.text = curQuantity;
    lblTemp3.text = [NSString stringWithFormat:@"$ %0.2f", price];
    } break;
    case 1: {
        lblTemp1.text = @"Your Total:";
        lblTemp3.text = @"How can I get Total here";
    } break;
 }
return cell;
}
4

1 に答える 1

2

ラベルがテーブル セルの一部であろうと、他の種類のビューであろうと、ラベルの値を取得する必要はありません。ユーザーはラベルを変更できません。ラベルは表示専用です。つまり、ラベルが特定の値を取得できる唯一の方法は、プログラムがその値を設定することであり、つまり、必要なデータがどこかに既にあることを意味します。これは、ユーザーからの入力を取得するために使用されるコントロール以外のあらゆる種類のビューに当てはまります。

ラベルから値を取得しようとしているということは、ビューを使用してデータを保存していることを意味している可能性があり、これは良い方法ではありません。ビューにはデータが表示されますが、そのデータはプログラム内の別の場所 (通常はデータ モデル) に格納する必要があります (MVC パラダイムに従っている場合)。

つまり、その-cellForRowAtIndexPath:メソッドを使用して、テーブルから特定の行のセルを取得できます。そこから、通常の-viewWithTag:方法でセルのサブビューにアクセスできます。セルごとに一意のタグのセットは絶対に必要ありません。関心のある行のセルを取得するだけで済みます。ただし、テーブルは通常、周囲に表示されているセルのみを保持することに注意してください。 ; 表示されていない行のセルを要求すると、おそらくそのセルを作成する必要があります。これには、テーブルのデリゲート (独自のコード!) にセルを要求することが含まれます。これは、既に持っているデータを自問するのにかなり費用がかかる方法です! ;-)

于 2012-05-15T23:17:02.460 に答える