TableViewCell中的Swift 3.0 Textfield没有显示出来

时间:2017-08-16 04:01:39

标签: ios swift tableview textfield custom-cell

我正在尝试使用自定义单元格在tableview上显示文本字段。我认为我已经正确设置了委托协议,但是在加载时,tableview没有显示文本字段。我在customcell中添加了一个文本字段,将类设置为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")
}

自定义单元格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)
    }

3 个答案:

答案 0 :(得分:2)

您的数据来源为空。

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

答案 1 :(得分:0)

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

self.tableView.register(UINib(nibName: "Your Cell XIB name", bundle: nil),
            forCellWithReuseIdentifier: "Cell")

答案 2 :(得分:0)

检查您的data.count。它必须返回大于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
}