gpt4 book ai didi

ios - 按钮不会从 swift iOS 的 super View 中删除文本字段及其本身

转载 作者:行者123 更新时间:2023-11-30 11:52:36 25 4
gpt4 key购买 nike

我在我的 View 中生成一个 textField 和一个删除器 Button,用于生成我定义的函数 pressedTextAction 并从其中删除它们我已经定义了函数 pressedTextDestAction 并分配给按钮 textDest 但问题是当我生成多个文本字段和按钮时以及当我单击 textDest 的删除按钮时 它仅删除添加到 View 中的最后一个文本字段和按钮,而 textDest 的其余部分不起作用,它们不会删除文本字段和按钮。

这是其他删除器按钮无法删除文本字段及其本身的按钮。

enter image description here

这是代码

@objc func pressedTextAction(_ sender: UITextField) {
self.textFieldElement = "textField1"

self.updateScrollY()

textFieldTag += 1
textDestTag += 1
uniY += 60
//let textY = self.uniY + 20

self.sampleTextField = UITextField(frame: CGRect(x: self.xValue, y: uniY, width: 200, height: 30))
self.sampleTextField.placeholder = "Enter placeholder"
self.sampleTextField.font = UIFont.systemFont(ofSize: 15)
self.sampleTextField.borderStyle = UITextBorderStyle.roundedRect
self.sampleTextField.autocorrectionType = UITextAutocorrectionType.no
self.sampleTextField.keyboardType = UIKeyboardType.default
self.sampleTextField.returnKeyType = UIReturnKeyType.done
self.sampleTextField.clearButtonMode = UITextFieldViewMode.whileEditing;
self.sampleTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.center
self.sampleTextField.delegate = self as? UITextFieldDelegate
self.sampleTextField.tag = self.textFieldTag
print("\(String(describing: self.sampleTextField.tag))")
self.view.addSubview(self.getFormView)
self.getFormView.addSubview(self.sampleTextField)
let frametext = self.sampleTextField.frame.size.height
self.textObjects?.append(self.sampleTextField as Any)
self.yValue = self.yValue + Int(frametext) + 20
self.xValue = 20
print("You have text field with tag \(self.sampleTextField.tag)")

let yOftextDest = uniY
self.textDest = UIButton(frame: CGRect(x: self.xValue + 220, y: yOftextDest + 5, width: 20, height: 20))
self.textDest.setImage(#imageLiteral(resourceName: "destroyIcon"), for: .normal)
self.getFormView.addSubview(textDest)

self.textDest.addTarget(self, action: #selector(pressedTextDestAction(_:)), for: .touchUpInside)
self.textDest.tag = self.textDestTag
print("\(String(describing: self.textDest.tag))")
self.textDestObjects?.append(self.textDest as Any)
self.enterPlaceholder()


}



@objc func pressedTextDestAction(_ sender: UIButton) {
self.updateScrollY()
self.sampleTextField.viewWithTag(sampleTextField.tag)?.removeFromSuperview()
self.textDest.viewWithTag(textDest.tag)?.removeFromSuperview()

}

最佳答案

我建议使用带有自定义单元格的 UITableView,该单元格具有文本字段和破坏性按钮。这样您就可以轻松添加和删除新的文本字段,而无需显式引用每个文本字段。

在您的 pressedTextDestAction 上,您可以从表和数据源中删除该行,并确保删除正确的文本字段。

它可能看起来像这样

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 环境中执行此操作的首选方法。

关于ios - 按钮不会从 swift iOS 的 super View 中删除文本字段及其本身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48182030/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com