gpt4 book ai didi

ios - 如何使用拖放重新排序 UITableView?

转载 作者:行者123 更新时间:2023-12-01 18:35:22 24 4
gpt4 key购买 nike

我知道拖放可用于在整个应用程序和应用程序之间传输数据。我对此不感兴趣。我想要的只是使用拖放功能来重新排序表 View 而不传输数据。我怎么做?

最佳答案

如果您在 上执行拖动操作单品本地 ,您可以使用 tableView(_:moveRowAt:to:) .为此,您需要实现 UITableViewDragDelegate .

设置

首先设置您的代表。设置 dragInteractionEnabled iPhone 需要。

func viewDidLoad() {
super.viewDidLoad()
tableView.dataSource = self
tableView.delegate = self
tableView.dragDelegate = self
tableView.dragInteractionEnabled = true
}

UITableViewDragDelegate

请注意,该数组正在返回单个项目。如果您返回不止一件商品,则 UITableViewDropDelegate将使用方法而不是 tableView(_:moveRowAt:to:) .您必须设置一个本地对象。
func tableView(_ tableView: UITableView, itemsForBeginning session: UIDragSession, at indexPath: IndexPath) -> [UIDragItem] {
let dragItem = UIDragItem(itemProvider: NSItemProvider())
dragItem.localObject = data[indexPath.row]
return [ dragItem ]
}

移动

这是移动发生的地方,实际上是 UITableViewDelegate 的一部分.
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
// Update the model
let mover = data.remove(at: sourceIndexPath.row)
data.insert(mover, at: destinationIndexPath.row)
}

您也可以使用 tableView(_:canMoveRow:at: ) 和 tableView(_:targetIndexPathForMoveFromRowAt: toProposedIndexPath:)如果需要的话。

你可以在这里阅读更多...
  • Drag and Drop
  • Adopting Drag and Drop in a Table View
  • 关于ios - 如何使用拖放重新排序 UITableView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60270449/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com