SWIFT: UITableViewCell 在 UITableView 中设置其属性之前被初始化

SWIFT: UITableViewCell is initialised before its properties are set in UITableView

我有这个UITableViewCell:

class TableViewCell3: UITableViewCell {
    var sectionLabel: String?
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.setupLabel()
    }

    func setupLabel() {
        let myTextField: UITextField = UITextField(frame: CGRect(x: 0, y: 0, width: 300.00, height: 30.00));
        // App crashes here because sectionLabel is nil
        myTextField.text = sectionLabel!
        self.contentView.addSubview(myTextField)
    }
}

如您所见,我试图在每个 UITableViewCell 中显示一个 UITextField
我要显示的 属性 sectionLabel 设置在 UITableView:

extension MoviesViewController5: UITableViewDelegate, UITableViewDataSource {
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        guard let cell =
            tableView.dequeueReusableCell(withIdentifier: "tableViewCell", for: indexPath) as? sectionTableCell2
            else {
                fatalError("Unable to create explore table view cell")}

        cell.sectionLabel = sectionsLabels![indexPath.row]
        return cell
    }
}

问题是 UITableViewCellsectionLabel 属性 设置之前初始化。
所以当我尝试显示它时:

   myTextField.text = sectionLabel!

应用程序崩溃,因为它是 nil
是的,我知道我应该添加 nil 检查,但这不是重点。
POINT 是如何显示 UItextField AFTER sectionLabel 属性 设置的。

最好在初始化程序中设置 UITextfield 并在更新 sectionLabel 时设置其文本。

class TableViewCell3: UITableViewCell {

    private var myTextField: UITextField?

    var sectionLabel: String? {
        didSet {
             self.myTextField?.text = self.sectionLabel
        }
    }
 
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        self.setupLabel()
    }

    func setupLabel() {
        myTextField = UITextField(frame: CGRect(x: 0, y: 0, width: 300.00, height: 30.00));
        self.contentView.addSubview(myTextField!)
    }
}