2

iOS アプリ用に展開/折りたたみ可能なセルを使用して UITableView を作成しています。そのアプリでは、下向き矢印の画像を表示したいので、クリックすると画像が上向き矢印になります。これは可能ですか?

これが私のコードです

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (selectedIndex == indexPath.row)
    {
        selectedIndex = -1;
        [myContestTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
        return;
    }
    if (selectedIndex != -1)
    {
        NSIndexPath *prevPath = [NSIndexPath indexPathForRow:selectedIndex inSection:0];
        selectedIndex = indexPath.row;
        [myContestTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:prevPath] withRowAnimation:UITableViewRowAnimationFade];
    }
    selectedIndex = indexPath.row;
    [myContestTableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}

これは「rotateImage」という名前の私の画像です。私を助けてください。これが私の拡張可能なセルのデフォルト画像です:

ここに画像の説明を入力

ユーザーがセルをクリックすると、画像は上向きの矢印になり、ユーザーがセルのデフォルト画像を再度クリックすると、再び表示されます。

4

1 に答える 1

4

サブクラス化するUITableViewCell場合は、使用できます: setSelected: animated:、そこに構成を追加します。

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];

    YOURIMAGEVIEW.transform = CGAffineTransformMakeRotation(selected ? M_PI : 0);

    // Configure the view for the selected state
}

-cellForRowAtIndexPathそうでない場合は、次のように内部で使用するだけです。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    ...
    YOURTABLECELL.yourImageView.tranform = CGAffineTransformMakeRotation((selectedIndex == indexPath.row) ? M_PI : 0);
    ...

    return tableCell;
}
于 2016-01-21T07:39:36.980 に答える