在ViewdidLoad之外添加UITextField

时间:2015-02-05 09:26:25

标签: ios xcode swift storyboard uitextfield

我似乎无法弄清楚如何在viewdidload方法之外添加TextField

我有function来检查选择(在UIPickerView中)是否为欧洲,如果是,则需要添加新的TextField,如果不是(并且TextField存在)它应该删除它。

这是我的代码:

func updateLabel(){
   switch country{
            case "Internationaal":
                tailleSize = taille.international
            case "Europe":
                var myTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 40.00));
                myTextField.backgroundColor = UIColor.grayColor();
                myTextField.placeholder="  Enter here";
                //myTextField.text = "    Enter here";
                myTextField.borderStyle = UITextBorderStyle.Line;
                myTextField.secureTextEntry=true;
                tailleSize = String(taille.europe)
           default: 
                tailleSize = String(taille.europe)
   }
}
每次用户按下updateLabel时都会运行

button,或者从UIPickerView中选择一个项目。

我该怎么做?

我试图在变量中获取主视图控制器并将其添加到那里,但这是失败的。

2 个答案:

答案 0 :(得分:0)

我认为将你的UITextField分别添加到hidden上的viewDidLoad视图会更有意义,它会产生更清晰的switch语句,你的文本字段可以重复使用而不是每次重新创建。

<强>的ViewController

override func viewDidLoad() {
    super.viewDidLoad()
    addTextFieldToView()
}

var myTextField:UITextField!

func addTextFieldToView() {
    myTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 200, height: 40.00))
    myTextField.backgroundColor = UIColor.grayColor()
    myTextField.placeholder = "Enter here"
    myTextField.borderStyle = UITextBorderStyle.Line
    myTextField.secureTextEntry = true
    myTextField.hidden = true
    self.view.addSubview(myTextField)
}

func updateLabel(){
    switch country{
        case "International":
            tailleSize = taille.international
            myTextField.hidden = true
        case "Europe":
            tailleSize = String(taille.europe)
            myTextField.hidden = false
       default: 
            tailleSize = String(taille.europe)
            myTextField.hidden = true
    }
}

您还可以使用enabled属性来启用和禁用文本字段,而不是使其不可见。 myTextField.enabled = false

答案 1 :(得分:0)

将TextField添加到故事板中您想要的位置&#34; normal&#34;方式并将其与您的代码连接。

override func viewDidLoad() {
        super.viewDidLoad()
        myTextField.hidden = true; //TextField disappears
        //You also can set the textField in Interface Builder to hidden.
    }

func updateLabel(){
   switch country{
            case "Internationaal":
                tailleSize = taille.international
            case "Europe":
                myTextField.hidden = false; //TextField appears
                myTextField.backgroundColor = UIColor.grayColor();
                myTextField.placeholder="  Enter here";
                //myTextField.text = "    Enter here";
                myTextField.borderStyle = UITextBorderStyle.Line;
                myTextField.secureTextEntry=true;
                tailleSize = String(taille.europe)
           default: 
                tailleSize = String(taille.europe)
   }
}