首页 > 解决方案 > 从表格视图重新加载单元格后管理表格视图单元格,文本字段中的数据不清晰

问题描述

初始点App启动截图

初始点App启动截图

添加新单元格时的第二个屏幕截图

添加新单元格时的第二个屏幕截图

添加第三个和第四个单元格后

添加第三个和第四个单元格后

第五次后它再次重新加载单元格

第五次后它再次重新加载单元格

UITableviewcell 包含文本字段。每个单元格文本字段应包含不同的数据。当用户进入时。

我的问题是当表格视图加载第一个单元格(个人 1)时。当我添加下一个单元格(个人 2)并继续添加单元格(个人 3,个人 4)时,如屏幕截图所示。当我添加单元格(个人 5)时,带有文本字段的单元格(个人 5)重新加载(个人 1)的单元格的相同数据。单个 5 文本字段的单元格应为空。

但是当他们重新加载单元格时,我无法管理单元格并清除文本字段?

我是新来的 swift ......请帮忙!

Thx 在预付款...

class ViewController:UIViewController,UITableViewDataSource,UITableViewDelegate {

@IBOutlet weak var addmore: UIButton!
var ar = ["Individual 1"]

@IBOutlet weak var tableview: UITableView!

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return ar.count
}

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

    let cell = tableview.dequeueReusableCell(withIdentifier: "cell") as! TableTVC
    cell.indivuallbl.text! = ar[indexPath.row ]
   return cell
}



func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 240.5
}

@IBAction func deleterow(_ sender: Any) {

    let point = (sender as AnyObject).convert(CGPoint.zero, to: tableview)
    guard let indexPath = tableview.indexPathForRow(at: point) else {
        return
    }
    ar.remove(at: indexPath.row)
    print(ar.count)



}


override func viewDidLoad() {
    super.viewDidLoad()

    NSLog("a", 1)
    addmore.layer.cornerRadius = 5


}




@IBAction func addmore(_ sender: Any) {


    ar.insert("Individual \(ar.count + 1 )", at: ar.count)
    print(ar.count)
    let myIndexPath = IndexPath(row: ar.count-1 , section: 0)
    tableview.insertRows(at: [myIndexPath], with: .bottom)


}

标签: iosswift

解决方案


TableView Cell 重用自身。每次重用时,都会调用 prepareForReuse 方法。覆盖您的单元格的此方法。将值设置为零。

请参阅此链接:- https://developer.apple.com/documentation/uikit/uitableviewcell/1623223-prepareforreuse

override func prepareForReuse() {
    // Clean up all values

}

推荐阅读