挿入コントロール (緑色のプラス アイコン) を介して行を挿入できるようにする UITableView があります。(元々、これはナビゲーション バーの [追加] コントロールで動作していましたが、[戻る]、[追加]、および [編集] コントロールでは、ナビゲーション バーが少し雑然としているように感じました)。
私はこれを機能させましたが、これが並べ替えコントロールと相互作用する方法が好きではありません。私のテーブルにはセクションが 1 つしかありません。挿入行は常にテーブルの最後の行として表示され、並べ替え可能ではありません。
挿入制御行に対して false を返す canMoveRowAtIndexPath: を実装しましたが、これは部分的な解決策にすぎません。これにより、挿入行をドラッグする機能が削除されました。ただし、ユーザーが可動行を選択して挿入コントローラー行の下にドラッグすることを妨げるものは何もありません。(許可されている場合、これによりアプリがクラッシュします)。
私が実装した回避策は、moveRowAtIndexPath:toIndexPath で to の場所を確認することです。移動先が挿入行の下にある場合、移動は実行せず、[tableView reloadData] を呼び出して前のテーブルの状態を再描画します。これは機能しますが、外観がぎこちなく、行が以前の位置に戻るだけで、理由は示されません。
これは正しい動作ですか?それとももっと洗練された解決策がありますか? 理想的には、そもそもユーザーが行を違法な場所にドラッグできないようにしたいのですが、それを防ぐメカニズムがあるかどうかはわかりません。