微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Tableview 单元格在空的 textview 中随机放置字符串

如何解决Tableview 单元格在空的 textview 中随机放置字符串

在我下面的 swift 代码中,按下了一个添加按钮来添加一个 tableview 单元格。问题在于,在添加的第六个 tableview 单元格中,数字 1 只是随机存在,并且每次添加一个单元格时都会重复此问题。你可以在下面的gif中看到我在说什么。我在答案中寻找的只是在文本视图中不添加任何内容的单元格。

enter image description here

import UIKit
/*
 
 */
class ViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
    
    
    var addBTN = UIButton()
    var arr = [nil] as [Any?]
    var currentIndex = 0
    var arrayValues = [Int]()
    var index = Int()
    
    
    
    
    var pic = UIImageView()
    
    var cellCount = 0
    var tableview = UITableView()
    
    
    
    
    
    func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
        return arr.count
    }
    func tableView(_ tableView: UITableView,heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 118
    }
    
    
    func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell",for: indexPath) as! CustomTv
        
        
        return cell
    }
    
    
    
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        [addBTN].forEach{
            $0.translatesAutoresizingMaskIntoConstraints = false
            view.addSubview($0)
        }
        tableview.frame = CGRect(x: 0,y: 0,width: view.frame.width,height: view.frame.height * 0.8)
        addBTN.frame = CGRect(x: view.frame.width / 2,y: view.frame.height * 0.8,width: view.frame.width / 2,height: view.frame.height / 5)
        addBTN.backgroundColor = .systemteal
        
        view.addSubview(tableview)
        
        
        tableview.register(CustomTv.self,forCellReuseIdentifier: "cell")
        tableview.delegate = self
        tableview.dataSource = self
        
        pic.frame = CGRect(x: 0,height: view.frame.height )
        
        
        addBTN.addTarget(self,action: #selector(newCell),for: .touchDown)
        
        
        addBTN.setTitle("New cell",for: .normal)
    }
    
    @objc func newCell(){
        cellCount += 1 // update the value
        arr.append(1)
        tableview.beginUpdates()
        tableview.insertRows(at: [IndexPath(row: arr.count - 1,section: 0)],with: .automatic) /// animate the insertion
        tableview.endUpdates()
        
    }
    
    
}


class CustomTv: UITableViewCell {
    
    lazy var backView : UIView = {
        let view = UIView(frame: CGRect(x: 10,y: 6,width: self.frame.width,height: 110))
        view.backgroundColor = .green
        
        return view
    }()
    
    
    
    
    
    lazy var txt : UITextField = {
        let btn = UITextField(frame: CGRect(x: 150-25,y: 60,width: 100,height: 50))
        btn.backgroundColor = .orange
        return btn
        
    }()
    override func layoutSubviews() {
        backView.clipsToBounds = true
        backView.frame =  CGRect(x: 0,width: bounds.maxX,height: 110)

        addSubview(backView)
        
        backView.addSubview(txt)
        
        
        
        
        
        
        
    }
    
}

解决方法

在cell类内部实现prepareForReuse方法 并在方法中清除文本字段

 override func prepareForReuse() {
        // clear the text field
    }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。