如何将子视图添加到 UITableViewCell
Posted
技术标签:
【中文标题】如何将子视图添加到 UITableViewCell【英文标题】:How to add a subview to a UITableViewCell 【发布时间】:2017-01-13 20:39:28 【问题描述】:我正在使用表格视图制作待办事项计划器。当用户在输入任务后按下回车键时,任务左侧应该会出现一个按钮。
我的 ViewController 类中的 textFieldShouldReturn 方法添加了按钮,但并不总是在屏幕的左上角。我是这样设置的:
func textFieldShouldReturn(_ textField: UITextField) -> Bool
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as! TextInputTableViewCell
self.view.addSubview(cell.cellButton) // puts a button in a wrong location, button doesn't respond to any action
cell.addSubview(cell.cellButton)
tableViewData.append(textField.text!)
lastItem = tableViewData.count
print(tableViewData)
print(lastItem)
self.tableView.reloadData() //update row count and array count
textField.resignFirstResponder()
return true
self.view.addSubview(cell.cellButton)
向视图添加一个按钮,但该按钮没有出现在正确的位置,(我尝试使用情节提要移动位置,但它没有做任何事情)。另外,按钮不会响应其相应的点击动作,这是在子类中声明的。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = self.tableView.dequeueReusableCell(withIdentifier: "cell")! as! TextInputTableViewCell
cell.textField.delegate = self
...
return cell
感谢任何帮助。如果我不太清楚,请告诉我
【问题讨论】:
【参考方案1】:你没有抓住这一行的正确单元格:
let cell = tableView.dequeueReusableCell(withIdentifier: "cell")! as! TextInputTableViewCell
您基本上是在告诉系统只给您一个单元格。您需要弄清楚实际返回的文本字段,并抓取包含该文本字段的单元格,然后将您的子视图添加到正确的单元格中。这样做的方法是用行号标记您的文本字段。
它在第一个示例中有效,因为您在 cellForRow 中,因此您确实拥有正确的单元格。
【讨论】:
嗯,您能否提供一些代码/伪代码来说明如何执行此操作?我基本上只对所有行使用一个 textField 实例,这似乎工作正常 分享更多代码?我认为您不正确,每个单元格都应该有自己的文本字段实例。您可能缺少对细胞如何重复使用以及它们如何工作的关键理解。尝试在你的委托方法中放置一个断点,你会发现 tectfields 是不同的。【参考方案2】:如果您在 .xib 或故事板文件中对齐按钮,然后将其隐藏直到您需要它出现,会不会更容易?
【讨论】:
以上是关于如何将子视图添加到 UITableViewCell的主要内容,如果未能解决你的问题,请参考以下文章
如何在编辑模式下将子视图添加到 UITableViewCell 并调整其大小?
将子视图添加到静态 UITableViewCell 不起作用
将子视图添加到 UITableViewCell contentView 的正确方法
是否不可能将子视图添加到我的 UITableViewCell 的 contentView 并使其宽度与 contentView 相等?