【发布时间】:2018-06-19 07:19:21
【问题描述】:
在我看来,我正在生成一个textField 和一个卸妆器Button,用于生成两者@ 但问题是当我生成多个 textFields 和按钮时,当我单击 textDest 的卸妆按钮时,它只删除最后一个 textField 和添加到视图中的按钮,其余的 textDest 不起作用他们没有删除 textField和按钮。
这是其他移除器按钮无法移除 textField 及其本身的按钮。
这里是代码
@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()
}
【问题讨论】:
-
您正试图从它的标签中找到相同的视图,然后将其从超级视图中删除。为什么不使用
self.sampleTextField.removeFromSuperview()和self.textDest.removeFromSuperview() -
@Mukesh 我用过这个,但它不起作用它还删除了最后生成的 textField 和它本身的按钮
-
这些是
getFormView的子视图,所以你应该使用self.getFormView.viewWithTag(sampleTextField.tag)?.removeFromSuperview()和self.getFormView.viewWithTag(textDest.tag)?.removeFromSuperview() -
@Mukesh 收到此错误“UIView”类型的值没有成员“removeFromSuperview”
-
我认为问题可能在于使用 += 1 分配标签。尝试对您添加的最后一个标签进行全局引用。
var lastTag: Int = 0,然后在创建按钮时增加此变量。并将这个变量的值赋给创建的字段的标签。
标签: ios swift uibutton uitextfield