2017-12-20 13 views
0

iOS 11では、同じテーブルビュー内で単一の行を並べ替えるための既存のUITableViewDelegateメソッドを使用する新しいドラッグアンドドロップAPIがあります。最後の実際のセルの下のセルセパレータを非表示にするために、空のビューをtableView.tableFooterViewとして使用します。ただし、セルが数個しかなく、フッターが表示されている場合、セルを最後の位置に移動しようとすると、tableviewフッターがドロップを受け付けないため、扱いにくいことがあります。UITableViewは、tableviewフッターにドロップされたときに最後の行にセルを移動します

最後IndexPathにテーブルビューのフッターから滴をリダイレクトするためにUITableViewDropDelegateから

func tableView(_ tableView: UITableView, targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath 

または別の方法を使用するには、いくつかの方法がありますか?

私が考えることができる唯一の他の選択肢は、フッターをカスタムドロップターゲットにすることですが、ドロッププレビューのサイズを変更し、ドロップを処理するコードパスを変更します。

+0

tableViewのフッターをドロップターゲットにして、コールバック内でアイテムを配列の最後に追加してtableViewをリロードします –

+0

@Sh_Khanはい、私はそれを考えましたが、縮小せずにこれを処理する方法があるかどうか疑問でした通常のリオーダリングUIと一致するようにセルをプレビューします(ドロッププレビュー)。 – blwinters

答えて

0

私はテーブルビューのフッターをカスタムドロップターゲットとして使用することになりました。ドラッグされたセルはテーブルビュー全体の境界を越えるまでサイズが変更されないので、これは非常に滑らかなソリューションです。唯一の大きな違いは、このアプローチでは、最後のドラッグ位置からドロップするのではなく、元のインデックスからセルがアニメーション化されることです。

関連する問題