在 ViewdidLoad 之外添加 UITextField

Adding UITextField outside ViewdidLoad

我似乎无法弄清楚如何在 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 中选择一个项目时。

我该怎么做?

我试图在变量中获取主要 viewcontroller 并将其添加到那里,但失败了。

我认为单独定义您的 UITextField 将其添加到 viewDidLoad 上的视图 hidden 中会更有意义,这将使 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

以 "normal" 的方式将 TextField 添加到故事板中您想要的位置,并将其与您的代码连接。

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)
   }
}