gpt4 book ai didi

swift - moveRowAtIndexPath 后重新加载数据

转载 作者:行者123 更新时间:2023-11-30 10:08:22 26 4
gpt4 key购买 nike

我有一个tableview,其中包含两个部分:要购买的成分和用户已经拥有的成分。因此,基本上,当使用购物时,他/她会将一种成分从一个列表传递到另一个列表。

这里是tableView:cellForRowAtIndexPath

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("IngredientCell", forIndexPath: indexPath) as! IngredientCell
cell.checkbox.checkboxDelegate = self
cell.checkbox.checkboxIndex = indexPath
...
}

我将称之为:(我包含了 stateOfCheckbox - 每个 tableviewcell 都包含一个具有 checkbox 角色的自定义按钮 - 基本上这个按钮为我提供了从/到我将进行移动的方向)。

 func doChange(stateOfCheckbox: Bool, row: Int){
let fromSection = stateOfCheckbox ? 0 : 1
let toSection = stateOfCheckbox ? 1 : 0

let fromIndexPath = NSIndexPath(forRow: row, inSection: fromSection)
let toIndexPath = NSIndexPath(forRow: 0, inSection: toSection)

let dataPiece = ingredients[fromIndexPath.section][fromIndexPath.row]
ingredients[toIndexPath.section].insert(dataPiece, atIndex: toIndexPath.row)
ingredients[fromIndexPath.section].removeAtIndex(fromIndexPath.row)

ingredientsTableView.moveRowAtIndexPath(fromIndexPath, toIndexPath: toIndexPath)
ingredientsTableView.reloadData()
}

我不想调用reloadData,但是当不调用时,表索引会以某种方式混淆。有必要吗?或者还有别的办法吗?

如果 reloadData 不存在,这就是它的行为方式。我不想重新加载所有内容并再次重新绘制。最佳实践是什么?

behaviour

最佳答案

我很确定问题不在于您在问题中发布的代码。从我在 Gif 中看到的情况来看,情况一定是这样的:

如果您选中一项,然后再选中该项下面的一项,则索引将移动 1。实际情况:它仍然使用检查第一个索引之前的旧索引。这些索引要么需要刷新,要么——我更喜欢——在您实际点击它时确定。

关于swift - moveRowAtIndexPath 后重新加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34765330/

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