在swift中向UITableViewCell添加文本字段

时间:2017-04-11 09:01:39

标签: ios swift uitableview uitextfield

我正在尝试在单击按钮时动态添加文本字段。

我认为最简单的方法是创建一个初始表视图,然后动态添加包含文本字段的新单元格。

然而,当我添加一个新单元格时 - 文本字段显示下面有2个单元格 - 我无法弄清楚我做错了什么..

// create a cell for each table view row
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    print("in delegte table view")
    return createTableRow()    
}

func createTableRow() -> UITableViewCell{

     let cell:UITableViewCell = self.extraGuestsTable.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as UITableViewCell!

     cell.textLabel?.text = "some text"

     let tf = UITextField(frame: CGRect(x: 20, y: 100, width: 300, height: 20))
     tf.placeholder = "Enter text here"
     tf.font = UIFont.systemFont(ofSize: 15)


     //cell.contentView.addSubview(tf)
     cell.addSubview(tf)

    return cell
}

如何让文本字段显示在正确的表格视图单元格中? 感谢

修改

非常感谢 - 正如一些人所指出的那样,问题是y位置设置为100 - 因此显示在单元格下方。 它应该是:

let tf = UITextField(frame: CGRect(x: 20, y: 0, width: 300, height: 20))

1 个答案:

答案 0 :(得分:2)

文本字段框架应为单元格大小,并检查您的数据源

使用

cell.contentView.addSubview(tf)

而不是cell.addSubview(tf)

默认高度为44,如果您想要更多,则实现相应的委托

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 200
    }

最后添加代码

class customCell: UITableViewCell {

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    override func setSelected(_ selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)

        // Configure the view for the selected state
    }

}

然后更改您的代码:

let cell: customCell = self.extraGuestsTable.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as customCell!


 let tf = UITextField(frame: CGRect(x: 20, y: 0, width: 300, height: 20))
 tf.placeholder = "Enter text here"
 tf.font = UIFont.systemFont(ofSize: 15)


 //cell.contentView.addSubview(tf)
 cell.addSubview(tf)

return cell