gpt4 book ai didi

ios - Swift - tableView 中的可移动行仅在一个部分内,而不是在两个部分之间

转载 作者:搜寻专家 更新时间:2023-11-01 06:00:41 25 4
gpt4 key购买 nike

有没有办法防止 tableView 中的单元格移动到不同的部分?

部分 包含不同类型单元格的数据,因此当用户尝试将单元格拖动到不同部分时,应用会崩溃。

我只想允许用户在部分内移动单元格,而不是在部分之间。

相关代码如下:

override func tableView(_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
return true
}

override func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
let reorderedRow = self.sections[sourceIndexPath.section].rows.remove(at: sourceIndexPath.row)
self.sections[destinationIndexPath.section].rows.insert(reorderedRow, at: destinationIndexPath.row)

self.sortedSections.insert(sourceIndexPath.section)
self.sortedSections.insert(destinationIndexPath.section)
}

最佳答案

您将需要实现UITableViewDelegate 方法targetIndexPathForMoveFromRowAt

如果源和目标 section 相同,您的策略是允许移动。如果不是,那么您可以返回第 0 行(如果建议的目标部分小于源部分)或该部分的最后一行(如果建议的目标部分大于源部分)。

这将限制移动到源部分。

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

let sourceSection = sourceIndexPath.section
let destSection = proposedDestinationIndexPath.section

if destSection < sourceSection {
return IndexPath(row: 0, section: sourceSection)
} else if destSection > sourceSection {
return IndexPath(row: self.tableView(tableView, numberOfRowsInSection:sourceSection)-1, section: sourceSection)
}

return proposedDestinationIndexPath
}

关于ios - Swift - tableView 中的可移动行仅在一个部分内,而不是在两个部分之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52242913/

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