我在视图中生成textField
和卸妆Button
,用于生成我已定义函数pressedTextAction
并从视图中删除它我已定义函数{{1并分配给Button pressedTextDestAction
,但问题是当我生成多个textFields&按钮,当我点击textDest
的移除按钮时,它只删除了最后一个textField和添加到视图的按钮,textDest
的其余部分不起作用,他们不会删除textField和按钮。
以下是其他卸妆按钮无法删除textField及其自身按钮。
这是代码
textDest
答案 0 :(得分:0)
我建议使用带有textField和破坏性按钮的自定义单元格的UITableView。这样,您可以轻松添加和删除新的textField,而无需显式引用每个textField。
在pressedTextDestAction
上,你可以从表格和dataSource中删除行,并确保删除正确的textField。
它可能看起来像这样
var placeholders: [String]
/*...*/
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = YourCustomCell() //dequeued
cell.textField.text = placeholders[indexPath.row]
cell.destructiveButton.tag = indexPath.row
cell.destructiveButton.addTarget(self, action: #selector(pressedTextDestAction(_:)), for: .touchUpInside)
return cell
}
现在在您的方法中:
@objc func pressedTextDestAction(_ sender: UIButton) {
table.removeRows(at: [IndexPath(row: sender.tag, section: 0)], with .fade)
placeholders.removeAt(sender.tag)
}
我建议你仔细查看UITableViews或UICollectionViews,因为它们真的可以帮助你管理可重用的项目。此外,这是在iOS环境中这样做的首选方法。