0

私は一種のメモアプリを使用しており、スワイプして削除するオプションを追加したいと考えていました (iPhone のデフォルトのメモアプリのように)。次の 2 つのテーブル ビュー メソッドを実装しました。

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

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete)
    {
        //Action to delete value of the cell
    }
}

アニメーション以外はすべてうまく機能します。スワイプ アクションで削除ボタンを表示することはアニメーションで発生しますが、非表示 (タップまたはテーブル ビューをスクロールすることによって) はアニメーションでは発生しません。削除ボタンがすぐに消えました。

削除ボタンが非表示になる過程をアニメーションで表示できますか?

4

1 に答える 1

1

カスタム セルでの編集を完全に制御するには、UITableViewCell サブクラスで willTransitionToState メソッドをオーバーライドし、状態マスクを確認する必要があります。

- (void)willTransitionToState:(UITableViewCellStateMask)state
{
    NSString *logStr = @"Invoked";
    if ((state & UITableViewCellStateShowingEditControlMask)
        != 0) {
        // you need to move the controls in left
        logStr = [NSString stringWithFormat:@"%@
                  %@",logStr,@"UITableViewCellStateShowingEditControlMask"];
    }
    if ((state & UITableViewCellStateShowingDeleteConfirmationMask)
        != 0) {
        // you need to hide the controls for the delete button
        logStr = [NSString stringWithFormat:@"%@
                  %@",logStr,@"UITableViewCellStateShowingDeleteConfirmationMask"];
    }
    NSLog(@"%@",logStr);
    [super willTransitionToState:state];
}

編集:

試しましたか:

setEditing:animated: 受信機の編集モードのオンとオフを切り替えます。

  • (void)setEditing:(BOOL)editing animation:(BOOL)animated パラメータ edit 編集モードに入る場合は YES、終了する場合は NO。デフォルト値は NO です。挿入/削除コントロールと並べ替えコントロールの表示または非表示をアニメーション化する場合は YES、遷移を即座に行う場合は NO。解説 edit の値を YES に設定してこのメ​​ソッドを呼び出し、UITableViewCell オブジェクトがコントロールを持つように構成されている場合、セルは各セルの左側に挿入 (緑のプラス) または削除コントロール (赤のマイナス) を表示し、右側のコントロールを並べ替えます。このメソッドは、UITableView の setEditing:animated: メソッドが呼び出されたときに、表示されている各セルで呼び出されます。編集を NO に設定してこのメ​​ソッドを呼び出すと、セルからコントロールが削除されます。

提供状況 iOS 2.0 以降で利用可能です。関連項目 @property 編集 UITableViewCell.h で宣言

于 2013-04-22T12:30:38.800 に答える