从表格视图重新加载单元格后管理表格视图单元格,文本字段中的数据不清晰

时间:2018-11-13 09:40:37

标签: ios swift

初始点应用启动屏幕截图

initial point App start screenshot

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

the second screenshot when I add new cell

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

after adding third and fourth cell

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

after fifth it reload the cell again

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

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

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

我是新手... 请帮助!!

预先感谢...

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)


}

1 个答案:

答案 0 :(得分:0)

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

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

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

}