swift uitableview 重新排序除最后一个单元格之外的单元格
swift uitableview reorder cells except the last cell
几天前,我从 Stack Overflow 收到了很好的建议。这是为了防止最后一个单元格在 UITableView 中移动。它使用以下代码。
func tableView (_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
if indexPath.row <myTableviewArray.count {
return true
}
return false
}
我用来移动单元格的代码是:
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
if destinationIndexPath.row != menuDic.count {
let movedObject = menuDic[sourceIndexPath.row]
menuDic.remove(at: sourceIndexPath.row)
menuDic.insert(movedObject, at: destinationIndexPath.row)
}
}
但是出现了意想不到的问题。另一个牢房在最后一个牢房下面移动!除最后一个单元格外,其他单元格不得移动到最后一个单元格下方。最后一个单元格应该始终是最后一个。
我用了下面两个代码,都失败了
func tableView (_ tableView: UITableView, targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath {
if proposedDestinationIndexPath.row == myTableviewArray.count - 1 {
return IndexPath (row: myTableviewArray.count - 1, section: 0)
}
return proposedDestinationIndexPath
}
func tableView (_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
if destinationIndexPath.row! = myTableviewArray.count {
let movedObject = myTableviewArray [sourceIndexPath.row]
myTableviewArray.remove (at: sourceIndexPath.row)
menuDic.insert (movedObject, at: destinationIndexPath.row)
}
}
使用这两个代码,单元格仍会移动到最后一个单元格的下方。堆栈溢出。一直谢谢你! :)
indexPath.row
从零开始。如果 myTableviewArray
是您的数据源。
indexPath.row <myTableviewArray.count
,永远如此。
尝试使用:
func tableView (_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
if indexPath.row < myTableviewArray.count - 1 {
return true
}
return false
}
几天前,我从 Stack Overflow 收到了很好的建议。这是为了防止最后一个单元格在 UITableView 中移动。它使用以下代码。
func tableView (_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
if indexPath.row <myTableviewArray.count {
return true
}
return false
}
我用来移动单元格的代码是:
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
if destinationIndexPath.row != menuDic.count {
let movedObject = menuDic[sourceIndexPath.row]
menuDic.remove(at: sourceIndexPath.row)
menuDic.insert(movedObject, at: destinationIndexPath.row)
}
}
但是出现了意想不到的问题。另一个牢房在最后一个牢房下面移动!除最后一个单元格外,其他单元格不得移动到最后一个单元格下方。最后一个单元格应该始终是最后一个。
我用了下面两个代码,都失败了
func tableView (_ tableView: UITableView, targetIndexPathForMoveFromRowAt sourceIndexPath: IndexPath, toProposedIndexPath proposedDestinationIndexPath: IndexPath) -> IndexPath {
if proposedDestinationIndexPath.row == myTableviewArray.count - 1 {
return IndexPath (row: myTableviewArray.count - 1, section: 0)
}
return proposedDestinationIndexPath
}
func tableView (_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
if destinationIndexPath.row! = myTableviewArray.count {
let movedObject = myTableviewArray [sourceIndexPath.row]
myTableviewArray.remove (at: sourceIndexPath.row)
menuDic.insert (movedObject, at: destinationIndexPath.row)
}
}
使用这两个代码,单元格仍会移动到最后一个单元格的下方。堆栈溢出。一直谢谢你! :)
indexPath.row
从零开始。如果 myTableviewArray
是您的数据源。
indexPath.row <myTableviewArray.count
,永远如此。
尝试使用:
func tableView (_ tableView: UITableView, canMoveRowAt indexPath: IndexPath) -> Bool {
if indexPath.row < myTableviewArray.count - 1 {
return true
}
return false
}