質問: 削除するにはスワイプして[more]ボタン(ios 7のmailアプリのように) ユーザーがテーブルビューでセルをスワイプしたときに「詳細」ボタンを作成する方法(ios 7のメールアプリのように)私はこことcocoa touchフォーラムの両方でこの情報を探していましたが、私は答えを見つけることができないようで、私自身が解決策をくれるより賢い人を望んでいます。ユーザーがtable view cellをスワイプして複数の編集ボタンを表示するようにしたい(彼のデフォルトは削除ボタンです)。 ios 7用のmailアプリでは、削除するためにスワイプすることができますが、表示される "more"ボタンがあります。
回答: 実装する方法ios 8がこのapiを公開しているようです。このような機能のヒントはbeta 2にあります。機能するようにするには、uitableviewのデリゲートに次の2つのメソッドを実装して目的の効果を得ます(例についてはgistを参照)。- tableview:editactionsforrowatindexpath: - tableview:commiteditingstyle:forrowatindexpath: 既知の問題点ドキュメントにはtableview:commiteditingstyle:forrowatindexpathは次のように記載されています。 「uitableviewrowactionを使用した編集アクションに対しては呼び出されません。代わりにアクションのハンドラが呼び出されます。」 しかし、スワイプはそれなしでは機能しません。メソッドスタブが空白の場合でも、今のところまだ必要です。これは明らかにbeta 2のバグです。出典 https://twitter.com/marksands/status/481642991745265664 https://gist.github.com/ marksands/76558707f583dbb8f870 元の回答: https://stackoverflow.com/a/24540538/870028 更新:これを使ったサンプルコード(swift): http://dropbox.com/s/0fvxosft2mq2v5m/deleterowexampleswift.zip サンプルコードのmasterviewcontroller.swiftには、このわかりやすいメソッドが含まれています。このメソッドを使用すると、opスクリーンショットに示す動作が得られます。override func tableview(tableview: uitableview, editactionsforrowatindexpath indexpath: nsindexpath) -> [anyobject]? { var morerowaction = uitableviewrowaction(style: uitableviewrowactionstyle.default, title: "more", handler:{action, indexpath in println("more•action"); }); morerowaction.backgroundcolor = uicolor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0); var deleterowaction = uitableviewrowaction(style: uitableviewrowactionstyle.default, title: "delete", handler:{action, indexpath in println("delete•action"); }); return [deleterowaction, morerowaction]; }