2016-02-21 115 views
0

我有一个按钮,它可以动态地将UITextField添加到xcode中的视图。我想保持按下按钮,以尽可能多的文本字段添加到视图彼此下,但我不知道如何做到这一点在按钮上添加多个uitextfields按

这里是我到目前为止的代码:

@IBAction func buttonPressed(sender: AnyObject) { 


    let sampleTextField = UITextField(frame: CGRectMake(20, 100, 300, 40)) 
    sampleTextField.placeholder = "Enter text here" 
    sampleTextField.font = UIFont.systemFontOfSize(15) 
    sampleTextField.borderStyle = UITextBorderStyle.RoundedRect 
    sampleTextField.autocorrectionType = UITextAutocorrectionType.No 
    sampleTextField.keyboardType = UIKeyboardType.Default 
    sampleTextField.returnKeyType = UIReturnKeyType.Done 
    sampleTextField.clearButtonMode = UITextFieldViewMode.WhileEditing; 
    sampleTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.Center 
    sampleTextField.delegate = self 
    self.view.addSubview(sampleTextField) 
    print(sampleTextField.text!) 

} 

IM意识到这增加一个texfield和按下按钮一个新的文本框重叠 我想按下按钮并添加另一个

+0

为什么不把UITextField和addButton作为最后一个单元使用UITableView? (更容易管理和实施) – UlyssesR

+0

我是新来的swift所以不知道如何做到这一点 – user3423164

+0

检查这一步一步教程,它可以帮助你.https://www.andrewcbancroft.com/2015/02/ 12 /自定义的UITableViewCell文本输入,斯威夫特/ – UlyssesR

回答

0

由于您想要下面的下一个文本框,您需要修改您的函数中的y框架。

创建一个变量来保存y原点值并将其值添加到函数的末尾。

var yValue = 100 

@IBAction func buttonPressed(sender: AnyObject) { 
    let sampleTextField = UITextField(frame: CGRectMake(20, yValue, 300, 40)) 
    sampleTextField.placeholder = "Enter text here" 
    sampleTextField.font = UIFont.systemFontOfSize(15) 
    sampleTextField.borderStyle = UITextBorderStyle.RoundedRect 
    sampleTextField.autocorrectionType = UITextAutocorrectionType.No 
    sampleTextField.keyboardType = UIKeyboardType.Default 
    sampleTextField.returnKeyType = UIReturnKeyType.Done 
    sampleTextField.clearButtonMode = UITextFieldViewMode.WhileEditing; 
    sampleTextField.contentVerticalAlignment = UIControlContentVerticalAlignment.Center 
    sampleTextField.delegate = self 
    self.view.addSubview(sampleTextField) 
    print(sampleTextField.text!) 

    yValue += 50 
}