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

Swift 3.0 Textfield in a TableViewCell not showing up

我正在尝试使用自定义单元格在表格视图上显示文本字段。我想我已经正确设置了委托协议,但是加载时,tableview 不显示文本字段。我在自定义单元格中添加了一个文本字段,将 class 设置为自定义单元格,并将标识符更改为 "Cell",但我不确定还缺少什么。

带表视图的视图控制器:

@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")
}

自定义单元格VC:

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)
    }

您的数据源是空的。

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    // data is not containing any value
    return data.count
}

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

中注册单元格
self.tableView.register(UINib(nibName: "Your Cell XIB name", bundle: nil),
            forCellWithReuseIdentifier: "Cell")

检查你的data.count。它必须 return 值大于 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
}