0
我知道如果單元格位於某個部分的下面,就會交換單元格,因爲互聯網充滿了這個空間,但我正在爲具有兩個部分的單元格掙扎。我無法移動每個單元格,因爲顯然索引超出範圍。我認爲這將是不必要的張貼整個代碼,所以我就只粘貼在部分之間重新排列單元格
我已經宣佈了重要的位:
let sections: [String] = ["Box", "Inventory"]
var s1Data: [UIImage] = [] //
var s2Data: [UIImage] = [] //these are filled by other function
let sectionsImages: [UIImage] = [#imageLiteral(resourceName: "blackBox"), #imageLiteral(resourceName: "blackBag")]
var sectionData: [[UIImage]] = []
在viewDidLoad中():
tableView.isEditing = true
tableView.delegate = self
tableView.dataSource = self
sectionData = [s1Data, s2Data]
然後相當桌面查看功能的數量,但我不能通過一個和我說的那個:
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath)
{
let item = sectionData[sourceIndexPath.row]
sectionData.remove(at: sourceIndexPath.row)
sectionData.insert(item, at: destinationIndexPath.row)
}
A nd所以,交換順利,直到我試圖交換最後一個圖像單元,因爲提到的「越界」失敗。我知道我應該申報項目如下:
let item = sectionData[sourceIndexPath.section][sourceIndexPath.row]
但是,「刪除」和「插入」呢? 我會爲你的幫助心存感激
編輯:
我做到了,雖然我不知道這是否是簡單的方法之一。總之:
func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath)
{
if sourceIndexPath.section == 0 && destinationIndexPath.section == 0
{
let item = sectionData[0][sourceIndexPath.row]
sectionData[0].remove(at: sourceIndexPath.row)
sectionData[0].insert(item, at: destinationIndexPath.row)
}
else if sourceIndexPath.section == 0 && destinationIndexPath.section == 1
{
let item = sectionData[0][sourceIndexPath.row]
sectionData[0].remove(at: sourceIndexPath.row)
sectionData[1].insert(item, at: destinationIndexPath.row)
}
else if sourceIndexPath.section == 1 && destinationIndexPath.section == 0
{
let item = sectionData[1][sourceIndexPath.row]
sectionData[1].remove(at: sourceIndexPath.row)
sectionData[0].insert(item, at: destinationIndexPath.row)
}
else if sourceIndexPath.section == 1 && destinationIndexPath.section == 1
{
let item = sectionData[1][sourceIndexPath.row]
sectionData[1].remove(at: sourceIndexPath.row)
sectionData[1].insert(item, at: destinationIndexPath.row)
}
else
{
print("ERROR - SWAP MALFUNCTION")
}
}