细胞需要滚动时的步进问题。
My_TableViewCell.swift
import UIKit
class My_TableViewCell: UITableViewCell {
@IBOutlet weak var My_Label1: UILabel!
@IBOutlet weak var My_Label2: UILabel!
@IBOutlet weak var My_Stepper: UIStepper!
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
...
My_TableViewController.swift
import UIKit
var My_Ids = ["C01","C02","C03","C04","C05","C06","C07","C08","C09","C10"]
var My_Values = ["0","0","0","0","0","0","0","0","0","0"]
class My_TableViewController: UITableViewController {
@IBAction func My_Stepper(sender: AnyObject) {
let point = sender.convertPoint(CGPointZero, toView: tableView)
let indexPath = self.tableView.indexPathForRowAtPoint(point)!
let cell = self.tableView.cellForRowAtIndexPath(indexPath) as! My_TableViewCell
cell.My_Label2.text = "\(Int(cell.My_Stepper.value))"
}
...
// MARK: - Table view data source
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return My_Ids.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell =
self.tableView.dequeueReusableCellWithIdentifier(
"My_TableCell", forIndexPath: indexPath)
as! My_TableViewCell
let row = indexPath.row
cell.My_Label1.text = My_Ids[row]
cell.My_Label2.text = "\(Int(cell.My_Stepper.value))"
return cell
}
...
当所有单元格都适合“页面”时,步进器运行良好但如果单元格调整大小并且您需要滚动表格视图,则会在其他单元格中重复这些值。
如果更改单元格C06和C07上的值,这将反映C01和C02单元格,反之亦然。
Please view this image showing the snapshots with the errors
答案 0 :(得分:1)
UITableViewController
故意将单元格重用为优化。您需要清除旧单元格设置作为解决方案的一部分。在prepareForReuse
课程中添加My_TableViewCell
方法。
你这样做:
- (void) prepareForReuse
{
[super prepareForReuse];
// clear previous cell settings
}
附加说明:
cellForRowAtIndexPath
。见this thread。MyTableViewCell
代替My_TableViewCell
。