textFieldShouldReturnで生成したつもりのボタンが表示されない
簡単なTodoリストを作ろうとしています。現時点は、チェックボックスを作り終えた段階です。
evernoteのように、改行したら新しいチェックボックスが出現するようにしたのですが、苦戦しています。textFieldShouldReturnを使おうとしているのですが、ここで生成しているつもりのボタンが画面に表示されません。(resignFristResponder()の改行は反映されています。)どこが悪いのか、ご指摘頂けたら幸いです。
※以下では、子クラスとしてチェックボックスを生成する「CheckBox」というクラスを持っています。
import UIKit
class ViewController: UIViewController,UITextFieldDelegate {
@IBAction func button(_ sender: CheckBox) {
}
@IBOutlet weak var WhatToDo: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
WhatToDo.delegate = self
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
func textFieldShouldReturn(_ WhatToDo: UITextField) -> Bool {
let newBox : UIButton = CheckBox()
newBox.layer.position = CGPoint(x: 100, y:100)
newBox.backgroundColor = UIColor.red
self.view.addSubview(newBox)
WhatToDo.resignFirstResponder()
return true
}
}
class CheckBox: UIButton {
let checkedImage = UIImage(named: "checked-box")
let uncheckedImage = UIImage(named: "unchecked-box")
var isChecked : Bool = false{
didSet{
if isChecked == true{
self.setImage(checkedImage, for:.normal)
}else{
self.setImage(uncheckedImage, for:.normal)
}
}
}
override func awakeFromNib() {
self.addTarget(self, action: #selector(self.buttondClicked(_:)), for: UIControlEvents.touchUpInside)
self.isChecked = false
}
func buttondClicked(_ sender:UIButton){
if(sender == self){
if isChecked == true{
isChecked = false
}else{
isChecked = true
}
}
}