快速将文本字段添加到 UITableViewCell

Posted

技术标签:

【中文标题】快速将文本字段添加到 UITableViewCell【英文标题】:Add a Text Field to A UITableViewCell in swift 【发布时间】:2017-04-11 09:01:39 【问题描述】:

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

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

但是,当我添加一个新单元格时 - 文本字段下方显示 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】:

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

使用

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

【讨论】:

我已经试过了,它目前被注释掉了,但它没有修复它 你的单元格高度是多少?你给y位置100?创建自定义单元格并使用它。 我实际上没有设置单元格高度——因为单元格是动态的——上面的代码就是全部,情节提要中没有任何内容。数据源也只是一个空数组: var tableData = [String]() 在您的数据源中返回一些计数并检查 使用自定义单元格

以上是关于快速将文本字段添加到 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章

将快速添加方法包含到 UITableView 的方法

将占位符添加到 UITextField,如何以编程方式快速设置占位符文本?

快速点击按钮时添加行或文本字段

快速解析时无法在json post请求参数中添加文本字段输入的文本

无法快速将特定日期和时间添加到 UserNotifications

如何快速在键盘上添加文本字段?