0

このコードを使用すると、詳細はステッパーが機能しません (ログで確認できます)

(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier=@"CellIDD";
Cell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
Data *item = [self.data objectAtIndex:indexPath.row];
if (cell == nil)
{
    cell = [[[Cell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
    cell.accessoryView = [self newStepper];
    if (NSStringFromClass([UIStepper class]))
        [(UIStepper *)cell.accessoryView setTag:indexPath.section * 100 + indexPath.row];
    else
        [(CustomStepper *)cell.accessoryView setTag:indexPath.section * 100 + indexPath.row];
}
if (NSStringFromClass([UIStepper class]))
{
    [(UIStepper *)cell.accessoryView setMinimumValue:0];
    [(UIStepper *)cell.accessoryView setMaximumValue:18];
    [(UIStepper *)cell.accessoryView setValue:[[_values objectAtIndex:indexPath.row] intValue]];
}
else
{
    [(CustomStepper *)cell.accessoryView setMinimumValue:0];
    [(CustomStepper *)cell.accessoryView setMaximumValue:18];
    [(CustomStepper *)cell.accessoryView setValue:[[_values objectAtIndex:indexPath.row] intValue]];
}
cell.cellTextLabel3.text = item.name;
cell.cellPriceLabel3.text = item.bounty;
cell.labelSnipper.text = [[_values objectAtIndex:indexPath.row] stringValue];
    NSLog(@"VALUE  %@",_values);
    return cell;} 

https://www.evernote.com/shard/s17/sh/49a47862-95e0-4266-90cd-0fc1b523107b/e208bba10a1cc1618dbdf4aef13264fe/deep/0/CellIDD.png

このコードを使用する場合、ステッパーが機能することを示すログのラベルが明確ではありません

NSString *cellID = [NSString stringWithFormat:@"CellID%d", indexPath.row]; 
Cell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
 Data *item = [self.data objectAtIndex:indexPath.row];
 if (cell == nil)
    {
        cell = [[[Cell3 alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID] autorelease];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        cell.accessoryView = [self newStepper];
        if (NSStringFromClass([UIStepper class]))
            [(UIStepper *)cell.accessoryView setTag:indexPath.section * 100 + indexPath.row];
        else
            [(CustomStepper *)cell.accessoryView setTag:indexPath.section * 100 + indexPath.row];
    }
    if (NSStringFromClass([UIStepper class]))
    {
        [(UIStepper *)cell.accessoryView setMinimumValue:0];
        [(UIStepper *)cell.accessoryView setMaximumValue:18];
        [(UIStepper *)cell.accessoryView setValue:[[_values objectAtIndex:indexPath.row] intValue]];
    }
    else
    {
        [(CustomStepper *)cell.accessoryView setMinimumValue:0];
        [(CustomStepper *)cell.accessoryView setMaximumValue:18];
        [(CustomStepper *)cell.accessoryView setValue:[[_values objectAtIndex:indexPath.row] intValue]];
    }
    cell.cellTextLabel3.text = item.name;
    cell.cellPriceLabel3.text = item.bounty;
    cell.labelSnipper.text = [[_values objectAtIndex:indexPath.row] stringValue];
        NSLog(@"VALUE  %@",_values);
        return cell;
     }

https://www.evernote.com/shard/s17/sh/1601451a-af62-4c35-9d27-4f23252ad50a/4ea3c85e0c38372b105e72cbaa58d942/deep/0/CellID%20d.png

4

2 に答える 2

0

これを行う簡単な方法は、ストーリーボードにセルをセットアップすることです。動的プロトタイプ セルのサイズを必要なサイズに変更し、ラベルとステッパーをドラッグします。セルのタイプをカスタムに設定し、UITableViewCell のサブクラスを作成する必要があります。セルのクラスをサブクラスに変更し、セル クラスの .h ファイルで、ドラッグした UI 要素用に IBOutlets をセットアップします。これらのアウトレットを通常の方法で接続すれば、準備完了です。

于 2013-08-07T14:21:49.103 に答える
0

質問を正しく理解していれば、セルにコンテンツがまったく表示されないという問題がありますか?

「CellIDD」から「D」を削除し、「CellID%d」から「%d」を削除します。ほとんどの場合、ストーリーボード内に単一のプロトタイプ セルを設計し、識別子 (この場合は「CellID」) を指定します。dequeueReusableCellWithIdentifier: メソッドは、「CellID」タイプのセルを 1 つ取得し、それを使用してテーブルにセルを入力します。

その上...

if (NSStringFromClass([UIStepper class]))

... は常に YES に解決されます。そこに何かが欠けていると思います。セルのアクセサリ ビューが UIStepper 型であるかどうかを確認したいと思います。

于 2013-08-07T06:43:24.483 に答える