gpt4 book ai didi

ios - 防止tableview单元格回收标签值

转载 作者:行者123 更新时间:2023-11-29 00:57:48 25 4
gpt4 key购买 nike

我有一个带有自定义单元格的表格 View ,其中包含 1 label和 1 button .该按钮用于每次我点击它,增加里面的数字 label ,例如我的 label值为 0 然后每次我点击按钮它都会增加 1

问题是我有很多数据,例如我有 20 个,每次滚动时我为标签设置一个值,所有值都会更改

这是我的代码:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCellWithIdentifier("testCell", forIndexPath: indexPath)

let pos = cell.viewWithTag(6) as! UIButton

pos.addTarget(self, action: #selector(testTableViewController.pos(_:)), forControlEvents: .TouchUpInside)
pos.tag = indexPath.row
return cell
}

func pos(sender: UIButton) {
let position: CGPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
let indexPath = self.tableView.indexPathForRowAtPoint(position)
let cell: UITableViewCell = self.tableView.cellForRowAtIndexPath(indexPath!)! as UITableViewCell

let countNo = cell.viewWithTag(7) as! UILabel

var counter:Int = Int(countNo.text!)!
counter = counter + 1
countNo.text = String(counter)
}

请帮我解决这个问题。我已经搜索了很多网站来找到答案,例如 make dequeueReusableCellWithIdentifier nil但在 Swift 2 中 dequeueReusableCellWithIdentifier从不nil还有很多没有人在工作

我需要一些提示来解决这个问题

最佳答案

这是你的答案。

初始化一个数组,其对象数量与 TableView 的行数相同。最初为每个对象插入值“0”或空白字符串(如果最初不想在标签中显示任何数字)。

例如,

var arrValues:NSMutableArray = NSMutableArray()

for _ in 1...numberOfrow

{
arrValues.addObject("0")
}

现在在 cellForRowAtIndexPath 方法中,显示此数组中的标签文本

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

let cell = tableView.dequeueReusableCellWithIdentifier("testCell", forIndexPath: indexPath)

let pos = cell.viewWithTag(6) as! UIButton
**let countNo = cell.viewWithTag(7) as! UILabel
countNo.text = String(arrValues.objectAtIndex(indexPath.row))**

pos.addTarget(self, action: #selector(testTableViewController.pos(_:)), forControlEvents: .TouchUpInside)
pos.tag = indexPath.row
return cell
}

按钮单击方法用递增的数字替换特定索引处的对象。请参阅下面的更新方法。

func pos(sender: UIButton) {
let position: CGPoint = sender.convertPoint(CGPointZero, toView: self.tableView)
let indexPath = self.tableView.indexPathForRowAtPoint(position)
let cell: UITableViewCell = self.tableView.cellForRowAtIndexPath(indexPath!)! as UITableViewCell

let countNo = cell.viewWithTag(7) as! UILabel

var counter:Int = Int(countNo.text!)!
counter = counter + 1
countNo.text = String(counter)
**arrValues.replaceObjectAtIndex(indexPath.row, withObject: String(counter))**
}

因此在 cellForRowAtIndexPath 中,它将在标签文本中显示更新的数字

关于ios - 防止tableview单元格回收标签值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37451119/

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