###前提・実現したいこと
textFieldShouldReturnを使って、textfieldを新たに生成するコードを作りたいのですが、新しいtextfieldが画面(正確には、ポップアップ遷移先のビューAddTaskView)に追加されません。
操作は全て、ポップアップで画面遷移した遷移先のAddTaskViewControllerで行われています。また、TF1やaddAllTask、新しく追加したいtextfieldは全てAddTaskView上のものです。
###発生している問題・エラーメッセージ
新しいtextfieldが画面に追加されません。 今までのtextfieldを含む配列AllTFの要素の数をタイトルとするボタンであるAddAllTask(つまり、textfieldの総数をあらわすボタン)には、新しく生成したtextfieldの分が反映されているので、生成はされているはずなのですが、、、、
###該当のソースコード
swift
1import UIKit 2 3class AddTaskViewController: UIViewController, UITextFieldDelegate{ 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 // Do any additional setup after loading the view. 9 TF1.delegate = self 10 addAllTask.setTitle("タスクを1項目追加", for: .normal) 11 AllTF.append(TF1) 12 } 13 14 override func didReceiveMemoryWarning() { 15 super.didReceiveMemoryWarning() 16 // Dispose of any resources that can be recreated. 17 } 18 19 @IBOutlet weak var AddTaskView: UIView! 20 21 @IBOutlet weak var addAllTask: UIButton! 22 23 @IBOutlet weak var TF1: UITextField! 24 25 var AllTF: [UITextField] = [] 26 27 28 var nextTF: UITextField! 29 30 func textFieldShouldReturn(_ textField: UITextField) -> Bool 31 { 32 let numberOfTF = AllTF.count 33 34 textField.resignFirstResponder() 35 createNewTF(parameter: numberOfTF) 36 return true 37 } 38 39 func createNewTF(parameter: Int) 40 { 41 let width = Int(TF1.frame.width) 42 let height = Int(TF1.frame.height) 43 let X = Int(TF1.frame.origin.x) 44 let Y = Int(TF1.frame.origin.y) + (height + 10) * parameter 45 46 nextTF = UITextField(frame: CGRect(x: X, y: Y, width: width, height: height)) 47 self.AddTaskView.addSubview(nextTF) 48 AllTF.append(nextTF) 49 nextTF.delegate = self 50 51 addAllTask.setTitle("タスクを\(AllTF.count)項目追加", for: .normal) 52 } 53}
###試したこと
最初は、最後の部分でself.view.addSubview(nextTF)となっていたのですが、self.AddTaskView.addSubview(nextTF)に直したり、あとはnextTFの座標を色々いじったりしました。
###補足情報(言語/FW/ツール等のバージョンなど)
swift3, xcode8
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。