0

これが私のセットアップです。何度も再利用される、カスタム設計されたセルを含むテーブル ビュー。レイアウトは 4 つの UILabels と 1 つの UIImageView です。

にセルをロードし、そのtableView:cellForRowAtIndexPath:中にセル (データ項目) を見つけた後、データソースから適切なテキストをラベルに入力します。

また、7つのピクトグラムがあります。各セルは、セルのコンテンツ (項目タイプ) に基づいて、これらのピクトグラムの 1 つを取得します。問題は、各ピクトグラムには、通常のバージョンと「選択された」バージョンが存在することです。つまり、セルが選択されると、デザイン チームから、わずかに異なる色のピクトグラムの修正版が提供されました。

そのため、セルが選択されたときに選択されたセルが表示されるように、セルごとに同じセルにロードする必要がありますpictogram_normalpictogram_selected

これをどのように設定すればよいですか?

4

1 に答える 1

0

セルが選択されている場合、このセルの背景画像ビューを変更してから、他のセルの背景画像ビューを通常にします。



- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    UITableViewCell* cell=[tableView cellForRowAtIndexPath:indexPath];
    cell.backgroundView=[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pictogram_selected.png"]] autorelease];
    cell.selected=YES;
    selectedIndex=indexPath.row;

    for(UITableViewCell* theCell in [tableView visibleCells]){
        if(![theCell isEqual:cell])
        {
            theCell.accessoryType=UITableViewCellAccessoryNone;
            theCell.selected=NO;
            [theCell.backgroundView removeFromSuperview];
        }
    }
}

selectedIndextableview の selectedindex を保存した数値です。選択状態を tableview に保存したい場合は、 selectedIndex を使ってセルを選択状態にします。


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    ITableViewCell*   cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:nil] autorelease];
    cell.selectionStyle=UITableViewCellSelectionStyleNone;

    //your code here

    if(indexPath.row == selectedIndex)
    {
        cell.backgroundView=[[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pictogram_selected.png"]] autorelease];
        cell.selected=YES;
    }

    //your code here

    return cell;
}
于 2012-10-07T16:47:48.683 に答える