2009-05-13 10 views
10

UITableViewのUITableViewCellで左から右の「この行を削除しますか」スワイプに応答して表示されるビューを変更することはできますか?UITableViewCellで削除アクセサリビューを変更する

現在、「削除」ボタンは他のすべてのUITableViewCellカスタマイズオプションを無視しているようです。

答えて

15

セルの削除についてトリッキーな事はこれです:あなたは、ボタンを「削除」を示すために、左から右にスワイプすると、のUITableViewCellはUITableViewCellStateShowingDeleteConfirmationMask状態に移行しますが、そのUITableViewCellStateEditingMask状態を設定しません。つまり、accessoryViewを編集状態に変更することはできません。

これを回避する方法は、UITableViewCellのwillTransitionToState:メソッドを見ることです。あなたができることは、このメソッドの呼び出しを傍受して、セルを削除確認状態にし、通常は表示される「削除」確認ボタンの代わりに自分のビューを表示することです。

詳細については、UITableViewCellのwillTransitionToState:についてはthe docsをご覧ください。

+1

Thanks Tim。これにより、スワイプを編集モードにすることができますが、自分自身の「削除」ボタンを表示するUITableViewCellを停止する方法はわかりません。現在のところ、これはスーパーにメッセージを渡すときに起こります。ドキュメントでは必須となっています。 これを行う唯一の方法は、自分自身のUIButtonを追加し、dataSourceのtableViewに依存するのではなく、自分自身を削除することです:commitEditingStyle:forRowAtIndexPath :? 削除処理がすべてのUITableViewCellカスタマイズオプションをバイパスするのは間違いです。 –

+0

Hm。スーパーメソッドを呼び出す代わりに独自の削除ボタンを設定して設定しない限り、UITableViewCellの組み込みの[削除]ボタンの表示を完全に非表示にすることはできません。 willTransitionToState:メッセージを削除モードに置いて、それを再ルーティングして編集モードにすることができます。このモードでは、(IIRC)は削除コントロールも提供します(小さな赤のマイナス記号)。 – Tim

+0

それは変だと思います。私は今のところアップルのボタンを回して、私は自分のスワイプの検出と削除の制御を実装する時間があると思う。 –

関連する問題