我正在尝试在单击按钮时动态添加文本字段。
我认为最简单的方法是创建一个初始表视图,然后动态添加包含文本字段的新单元格。
然而,当我添加一个新单元格时 - 文本字段显示下面有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))
答案 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