簡単な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
            }
        }
    }