按钮不会删除textField&本身来自swift iOS中的超级视图

时间:2018-01-10 07:09:25

标签: ios swift uibutton uitextfield

我在视图中生成textField和卸妆Button,用于生成我已定义函数pressedTextAction并从视图中删除它我已定义函数{{1并分配给Button pressedTextDestAction,但问题是当我生成多个textFields&按钮,当我点击textDest的移除按钮时,它只删除了最后一个textField和添加到视图的按钮,textDest的其余部分不起作用,他们不会删除textField和按钮。

以下是其他卸妆按钮无法删除textField及其自身按钮。

enter image description here

这是代码

textDest

1 个答案:

答案 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环境中这样做的首选方法。