gpt4 book ai didi

ios - 自动滚动时单元格文本复制到另一行(通过拖放)

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

事情是这样的,我试图在没有框架的情况下解决问题,因为我想理解它。我想做的是实现具有多部分和自动滚动功能的拖放 uitableview。我遇到的问题是,当来回自动滚动时,一些单元格(至少是它们的标签名称)在其他单元格上重复,我真的不明白为什么。

let indexPath = self.tableView.indexPathForRowAtPoint(currentLongPressTouchLocation)
if indexPath != Drag.sourceIndexPath
{
// swap the data between the 2 (internal) arrays
let dataPiece = self.items[Drag.sourceIndexPath.section][Drag.sourceIndexPath.row]
self.items[indexPath!.section].insert(dataPiece, atIndex: indexPath!.row)
self.items[Drag.sourceIndexPath.section].removeAtIndex(Drag.sourceIndexPath.row)

//------=-=-=-=[
// This line errors when it is uncommented. When I comment it out, the error is gone,
// and the cells /do/ reorder.. ¯\_(ツ)_/¯
// swap(&currentList.orderItems[indexPath.row], &currentList.orderItems[Drag.sourceIndexPath.row])
self.tableView.moveRowAtIndexPath(Drag.sourceIndexPath, toIndexPath: indexPath!)
Drag.sourceIndexPath = indexPath
// error is definitly here imo but cannot find it :/
}


override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! CustomViewCell

cell.tag = indexPath.row
let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width
cell.label.frame = CGRectMake(20, 0, screenWidth - 20, 44)
cell.textLabel?.text = self.items[indexPath.section][indexPath.row]
return cell
}

我忘记了 customviewcell 的初始化,我的错:

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width
label = UILabel(frame: CGRectMake(20, 0, screenWidth / 2, 44))
labelBis = UILabel(frame: CGRectMake(20, 20, screenWidth - 20, 20))
labelBis.textAlignment = NSTextAlignment.Center
self.contentView.addSubview(label)
self.contentView.addSubview(labelBis)

}

如果有人能在这方面帮助我,我将不胜感激,感谢阅读。

最佳答案

表格 View 单元格上的数据重复是由于 cellForRowAtIndexPath: 中的单元格重用所致。您可能正在调用 cellForRowAtIndexPath: 中的 dequeueReusableCellWithIdentifier 方法,它从池中拉出已经创建的单元格(通常当单元格 1 消失并且单元格 8 即将显示时,单元格 1 是重新用于单元格 8 而不是创建新单元格)。

发生这种情况时,我们有责任在设置新内容之前重置重新使用的单元格内容。有时,您的单元格标签设置代码可能处于 If 条件下,该条件未在当前上下文中执行,从而导致显示重复使用的单元格标签文本。

请检查,我确定您的情况会落入其中。

关于ios - 自动滚动时单元格文本复制到另一行(通过拖放),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32904832/

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