最初の行にUITextFieldとチェックボックスを表示して、UITextFieldでreturnキーを押した時に、次の行に新しいUITextFieldとチェックボックスが表示されるようなプログラムを作りたいのですが、UITextFieldはいまくいったもののチェックボックスが作動しません。どうすれば作動するのでしょうか。
以下、親クラス、子クラスの順番となっています。

import UIKit

class ViewController: UIViewController, UITextFieldDelegate {

@IBOutlet weak var firstBox: UIButton!

var newBox: UIButton!

@IBOutlet weak var firstTextField: UITextField!

var counter = 0

var newTextField: UITextField!

var currentTextField: UITextField!

func textFieldShouldReturn(_ textField: UITextField) -> Bool
{
    textField.resignFirstResponder()
    counter += 1
    createNewTextFieldAndBox(parameter: counter)
    return true
}

func createNewTextFieldAndBox(parameter: Int)
{
    //information of the textfields
    let tWidth = Int(firstTextField.frame.width)        //250
    let tHeight = Int(firstTextField.frame.height)      //30
    let XofTextField = Int(firstTextField.frame.origin.x)
    let YofTextField = (Int(firstTextField.frame.origin.y) + 16)*parameter + 20

    //information of the boxes
    let bWidth = Int(firstBox.frame.width)
    let bHeight = Int(firstBox.frame.height)
    let XofBox = Int(firstBox.frame.origin.x)
    let YofBox = (Int(firstBox.frame.origin.y) + 16)*parameter + 20

    //create new TF
    newTextField = UITextField(frame: CGRect(x: XofTextField, y: YofTextField, width: tWidth, height: tHeight))
    self.view.addSubview(newTextField)
    currentTextField = newTextField
    currentTextField.delegate = self

    //create new Box
    newBox = UIButton(frame: CGRect(x: XofBox, y: YofBox, width: bWidth, height: bHeight))

    newBox.setImage(#imageLiteral(resourceName: "uncheckedBox"), for: .normal)
    self.view.addSubview(newBox)
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    firstTextField.delegate = self
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

以下、子クラスです。

import UIKit

class CheckBox: UIButton {
var isChecked:Bool = false
{
    didSet
    {
        if isChecked == true
        {
            self.setImage(#imageLiteral(resourceName: "checkedBox"), for: .normal)
        }
        else
        {
            self.setImage(#imageLiteral(resourceName: "uncheckedBox"), 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
        }
    }
}
}

一部インデントがおかしくなっているところがあるかもしれませんがご容赦ください。また、子クラスのawakeFromNib以下やその周辺のコードはネットから引っ張ってきたものをほぼコピペしただけのものなので、あまりコードの意味がわかっていない状況です。ここのあたりのコードも新しいチェックボックスが作動しないことと関係あるのでしょうか。