代码之家  ›  专栏  ›  技术社区  ›  Kevin

TableViewCell中的Swift 3.0文本字段未显示

  •  0
  • Kevin  · 技术社区  · 7 年前

    我试图使用自定义单元格在tableview上显示textfield。我认为我已经正确设置了委托协议,但加载时,tableview不会显示textfield。我在customcell中添加了一个textfield,将类设置为customcell,并将标识符更改为“Cell”,但我不确定还缺少什么。

    带有tableview的视图控制器:

    @IBOutlet weak var tableView: UITableView! 
    
    
     override func viewDidLoad() {
        super.viewDidLoad()
    
        tableView.delegate = self
        tableView.dataSource = self
    }
    
    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        print("Hello")
    
    }
    
    func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }
    
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    
        return data.count
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! CustomCell
        cell.cellDelegate = self
        cell.contentView.bringSubview(toFront: cell.textField)
        cell.textField.delegate = self as? UITextFieldDelegate
        cell.textField.text = "Test"
    
        return cell
    }
    
    func didPressTextField(indexPath: IndexPath) {
        print("textfield was tapped")
    }
    

    protocol CustomCellDelegate : class {
        func didPressTextField(indexPath: IndexPath)
    }
    
    class CustomCell: UITableViewCell {
    
        weak var cellDelegate: CustomCellDelegate?
        var indexPath: IndexPath!
    
        override func awakeFromNib() {
            super.awakeFromNib()
            self.cellDelegate = nil
            // Initialization code
        }
    
        @IBOutlet weak var textField: UITextField!
        @IBAction func textFieldWasTapped(_ sender: UITextField) {
            self.cellDelegate?.didPressTextField(indexPath: indexPath)
        }
    
    3 回复  |  直到 7 年前
        1
  •  2
  •   Hooda    7 年前

    您的数据源为空。

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // data is not containing any value
        return data.count
    }
    
        2
  •  0
  •   Abhishek Thapliyal    7 年前

    检查 data.count 它应该有一些数据,而且如果这是带有XIB的自定义单元格,那么您需要在视图didload中注册单元格

    self.tableView.register(UINib(nibName: "Your Cell XIB name", bundle: nil),
                forCellWithReuseIdentifier: "Cell")
    
        3
  •  0
  •   Asim Iftikhar Abbasi    7 年前

    检查您的数据。计数它必须返回大于0的值,否则您的tableView显示为0行,tableView中不显示任何内容。

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
     // debug at this point check what is value of data.count its must be greater than 0
    return data.count
    }