Wiem, że istnieje możliwość zmiany kolejności pojedynczego elementu/komórki w czasie korzystania z nowych delegatów UITableViewDropDelegate
i UITableViewDragDelegate
, ale czy możliwe jest obsługiwanie obsługi wielu.Czy można używać iOS 11 Drag and Drop, aby zmienić kolejność wielu elementów/komórek jednocześnie w widoku UITableView?
Na przykład w tym zrzucie ja trzyma jeden przedmiot:
i upuszczanie komórkę stawia go na miejsce.
Jednak kiedy łapię wiele komórek otrzymuję żadnych oznak wejścia i komórki przyzwyczajenie Zmień kolejność:
gdybym kilka pozycji z innej aplikacji działa dobrze, na przykład przeciąganie wielu wiadomości z iMessage:
Czy można to zrobić, zmieniając kolejność widoku tabeli tylko z lokalnymi elementami, aby umożliwić szybszą zmianę kolejności?
Oto mój kod:
UITableViewDragDelegate
extension DotViewController: UITableViewDragDelegate {
func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
return [getDragItem(forIndexPath: indexPath)]
}
func tableView(_ tableView: UITableView, itemsForAddingTo session: UIDragSession, at indexPath: IndexPath, point: CGPoint) -> [UIDragItem] {
return [getDragItem(forIndexPath: indexPath)]
}
func getDragItem(forIndexPath indexPath: IndexPath) -> UIDragItem {
// gets the item
}
}
UITableViewDropDelegate
extension DotViewController: UITableViewDropDelegate {
func tableView(_ tableView: UITableView, canHandle session: UIDropSession) -> Bool {
return true
}
func tableView(_ tableView: UITableView, dropSessionDidUpdate session: UIDropSession, withDestinationIndexPath destinationIndexPath: IndexPath?) -> UITableViewDropProposal {
return UITableViewDropProposal(operation: .move, intent: .insertAtDestinationIndexPath)
}
func tableView(_ tableView: UITableView, performDropWith coordinator: UITableViewDropCoordinator) {
// Handles Drop
}
}
viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.dragDelegate = self
tableView.dropDelegate = self
tableView.dragInteractionEnabled = true
}
Czy możesz wyjaśnić jak multi-row zmiana kolejności mogą być realizowane? Czy wdrażasz metody delegatów niższego poziomu zamiast "UITableViewDragDelegate"? –