提供された reorderControls を使用すると、ユーザーはセルをタップ アンド ホールドしてドラッグし、並べ替えることができます。ドラッグするために選択されたセルとその現在のセルの位置を知るにはどうすればよいですか (つまり、他のセルがアニメーション化してフローティング セル用のスペースを作る場合、移動したセルのインデックスが必要です)。
私がやろうとしているのは、ユーザーが現在のセルを画面外のセルで並べ替えたい場合に、画面外のセルが画面上でスクロールされるようにビューをスクロールすることです。私のセットアップは次のとおりであるため、組み込みの動作を使用できません。
UIScrollView (親)
- UITableView (子)
また、UITableView フレームはその contentSize のフル サイズです (スクロールしません)。UITableView で並べ替えるには、ユーザーがセルをドラッグしている場所に対して外側の UIScrollView をスクロールする必要があります。
デリゲート関数とデータソース関数を調べてみましたが、今のところうまくいきません。グーグルとアップルのドキュメントも試してみました...
編集:ドキュメントが読めないようです。tableView:targetIndexPathForMoveFromRowAtIndexPath:toProposedIndexPath:
デリゲートプロトコルでは、必要なものが得られます。
解決策: tableview から scrollview のコントローラーへのデリゲートを作成します (私の tableview は独自のデリゲートです)。提案されたインデックス パス関数では、デリゲートに、表示される必要がある、proposedDestinationIndexPath の近くのセルを送信しました。indexpath が 0 または最大値の場合、これはそのセル自体である可能性があります。次に、デリゲートで [view convertPoint:FromView:] 関数を使用してそのセルの位置を計算し、スクロールビューのコンテンツ オフセットを設定してセルを表示します。ありがとう