gpt4 book ai didi

ios - swift - 保存自定义静态 uitableviewcell 的重新排序

转载 作者:行者123 更新时间:2023-11-30 11:38:17 25 4
gpt4 key购买 nike

我有一些自定义的表格 View 单元格,它们都有不同的 unib 和不同的类,并且想要对单元格重新排序并持久保护它们重新排序的位置。

我已经在 TablevViewController 中注册了每个单元格和 UINib

    let test1Nib = UINib(nibName: "Test1", bundle: nil)
myTableView.register(overViewNib, forCellReuseIdentifier: "Test1")

let test2Nib = UINib(nibName: "Test2", bundle: nil)
myTableView.register(todoNib, forCellReuseIdentifier: "Test2")

let test3Nib = UINib(nibName: "Test3", bundle: nil)
myTableView.register(financeNib, forCellReuseIdentifier: "Test3")

let test4Nib = UINib(nibName: "Test4", bundle: nil)
myTableView.register(upcomingNib, forCellReuseIdentifier: "Test4")

然后我将 UINibs 添加到我的 testArray 中:

    testArray.append(test1Nib)
testArray.append(test2Nib)
testArray.append(test3Nib)
testArray.append(test4Nib)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

if indexPath.row == 0 {
let cell = myTableView.dequeueReusableCell(withIdentifier: "Test1", for: indexPath)
return cell
} else if indexPath.row == 1 {
let cell = myTableView.dequeueReusableCell(withIdentifier: "Test2", for: indexPath)
return cell
} else if indexPath.row == 2 {
let cell = myTableView.dequeueReusableCell(withIdentifier: "Test3", for: indexPath)
return cell
} else {
let cell = myTableView.dequeueReusableCell(withIdentifier: "Test4", for: indexPath)
return cell
}

}

moveRowAt:函数正在按预期执行

func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
let movedObject = self.testArray[sourceIndexPath.row]
testArray.remove(at: sourceIndexPath.row)
testArray.insert(movedObject, at: destinationIndexPath.row)
NSLog("%@", "\(sourceIndexPath.row) -> \(destinationIndexPath.row)")
}

此时我遇到了一些问题1. 重新排序后,单元格将重新加载,因为我已将其索引路径固定为静态值,现在的问题是如何防止 他们自己重新排序,2.我怎样才能坚持这个顺序

我希望我能在这里找到帮助 - 我现在在网络上进行了很多研究,但没有什么能满足我的需求。希望我能找到解决方案或一些链接或代码片段。非常感谢!

最佳答案

您不应强制检查 indexPath 行来决定加载哪个单元格。

您应该获取他们的类型,然后切换到它。像这样:

let type = testArray[indexPath.row]
switch type {
case Type1:
let cell = myTableView.dequeueReusableCell(withIdentifier: "Test1", for: indexPath)
return cell

case Type2:
let cell = myTableView.dequeueReusableCell(withIdentifier: "Test2", for: indexPath)
return cell
}

如何设置此类型取决于您。有多种方法可以做到这一点,选择您最喜欢的。

关于ios - swift - 保存自定义静态 uitableviewcell 的重新排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49497937/

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