2015-10-19 84 views
0

我可以在按钮点击时添加文本框,但我无法删除已添加的文本框,我只能删除最近添加的文本框,但无法删除其他以前的文本框,我怎么能删除/删除Swift中的文本字段。如何在Swift中添加和删除按钮时添加和删除视图上的文本字段?

我已经成功添加了按钮,但我无法删除这些文本框。

我试图让每个文本字段的标签值,但在这里我错过了一些逻辑,请在这方面的帮助。提前致谢。

enter image description here

下面是当我点击删除参考图像( - )按钮,然后相对于该文本框必须拆除并不是所有的子视图。

//为add方法

@IBAction func btnAddOptionAction(sender: UIButton) 
{ 
    txtOption = UITextField(frame: CGRectMake(52, yFrame+17, 195, 30)) 
    txtOption.borderStyle = .None 
    txtOption.tag = index 
    let modifiedURLString = NSString(format:"Option %d", index) as String 
    //textField.text = modifiedURLString 
    txtOption.attributedPlaceholder = NSAttributedString(string:modifiedURLString, 
     attributes:[NSForegroundColorAttributeName: UIColor.whiteColor()]) 
    txtOption.font = UIFont(name: "Avenir Medium", size: 16) 
    txtOption.textColor = UIColor.whiteColor() 
    self.scrOptions.addSubview(txtOption) 


    btnDeleteOption.frame = CGRectMake(259, txtOption.frame.origin.y + 8, 25, 25) 
    btnAddOption.frame = CGRectMake(259, txtOption.frame.origin.y + txtOption.frame.size.height + 10, 25, 25) 

    btnDeleteOption.hidden = false 

    print("Add index", index) 

    index++ 
    yFrame = yFrame + 40 

    scrOptions.contentSize = CGSizeMake(0, btnAddOption.frame.origin.y + btnAddOption.frame.size.height + 20) 

} 

//对于删除方法

@IBAction func btnDeleteOptionAction(sender: UIButton) 
{ 
    yFrame = yFrame - 40 
    index-- 
    sender.tag = index 

    txtOption.removeFromSuperview() 

    imgoption.removeFromSuperview() 

    imgUnderLine.removeFromSuperview() 

    btnDeleteOption.frame = CGRectMake(259, yFrame - 15, 25, 25) 
    btnAddOption.frame = CGRectMake(259, yFrame + 32 - 15, 25, 25) 

    if index <= 1 
    { 
     btnDeleteOption.frame = CGRectMake(259, 25, 25, 25) 
     btnAddOption.frame = CGRectMake(259, 25, 25, 25) 

     btnDeleteOption.hidden = false 

    } 

    print("y-axis ",btnDeleteOption.frame.origin.y) 




} 
+0

你使用removeFromSuperview?可以发布您的代码,以便我们可以帮助您的viewDidLoad中的 – PK20

+0

,包括文本字段的代表。和后来在btnDeleteOptionAction,尝试self.textFields.removeFromSuperview() – PK20

+0

我已经给委托给我的文本字段,你清楚地观察到我只使用一个文本字段,每次我添加一个新的文本字段具有相同的名称。 –

回答

0

什么:

var myTag = 0 

if let myView = UIView() { 
    view.addSubview(myView) 
    myView.tag = myTag++ 
} 

if let viewWithTag = self.view.viewWithTag(myTag) { 
    viewWithTag.removeFromSuperview() 
} 

必须删除最后一个元素

+0

为您的解决方案,我不能删除以前的文本框,对于您提供的方法,我将删除它包含的所有子视图。 –

+0

每当我提供“self.view.subviews.last”,那么我得到这个错误 - 类型'UIView?'的值?没有成员'Generator' –

+0

尝试我的代码的新版本 –

0

尝试删除所有子视图。 删除所有子视图后,在视图中添加必需的文本框。 希望它有助于..快乐编码.. :)

0
@IBOutlet weak var updateIdView: UIView! 


let textField: UITextField = updateIdView.viewWithTag(textFieldTag) as! UITextField 
    textField.removeFromSuperview()