0

いくつかのセルを含むテーブルビューがあります。ユーザーがテーブルを編集できるように、次のコードを実装しました。

ユーザーが編集を開始したときにセルをフェードさせるにはどうすればよいですか?

- (BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath
{
return YES;
}

-(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {

UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
selectedCell.alpha = 0.1;

if ( editingStyle == UITableViewCellEditingStyleDelete)
{[XC1 removeObjectAtIndex:indexPath.row];
    [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

}

}

セルをフェードさせるために追加した現在のコードは機能しません!

UITableViewCell *selectedCell = [tableView cellForRowAtIndexPath:indexPath];
selectedCell.alpha = 0.1;

誰かが私を助けてくれることを願っています!

4

1 に答える 1

0

まず、セルのアルファをこのように設定できるかどうかはわかりません。セルはリサイクルされ、1つの特定のインデックスパスに「属さない」ことを忘れないでください。たぶん、最初に編集モードの外でいくつかの実験を実行する必要があります。

次に、commitEditingStyle呼び出す直前にメソッドのセルを変更しても、deleteRowsAtIndexPaths:ほぼ確実に何も起こりません。このメソッドは、セルを選択するときだけでなく、編集モードでのテーブルビューへの変更が確認されたときにのみ呼び出されます。

また、ビューのアルファを設定しても、この変更はアニメーション化されないことに注意してください。を呼び出す前に、アニメーションを追加してみてくださいdeleteRowsAtIndexPaths

[UIView animateWithDuration:0.25 animations:^{
   cell.alpha = 0.0; 
} completion:^(BOOL finished) {
   // remove the cell
}];

エフェクトをセルの選択にリンクしたい場合があります。これは、をオーバーライドすることによって最もよく行われますsetSelected:animated:

于 2013-02-22T00:20:51.617 に答える