为什么我的自定义 UITableViewCell 显示无法正确显示?

Chi*_*hip 5 uitableview ios swift

我有一个 UITableViewController ,其中有一个原型单元。该单元格中有一个标签和一个文本字段,并且其类设置为InputCell。当表视图加载时,单元格似乎已出列,但显示为默认的空单元格。

我已经检查了以下事项:

  • TableViewController 的类设置为我的 TableViewController 子类(ControlSettingsView)
  • TableViewController 是 TableView 的委托和数据源
  • 自定义单元格的类设置为我的 TableViewCell 子类(InputCell)
  • 自定义单元格重用标识符设置为“input_cell”,这与我的 TableViewController 中使用的标识符匹配。
  • 确保标签和文本字段位于我的单元格内容视图中,而不是单元格本身。
  • 我的单元格中视图的限制看起来很合理。
  • 将单元格背景设置为红色以使其突出,以检查标签和文本字段是否不可见,但单元格是否已正确出列。

从根视图控制器导航到我的设置视图的函数

func gototSettingsFor(control: EditableUIElement) {
        let v = ControlSettingsView()
        self.navigationController?.pushViewController(v, animated: true)
    }
Run Code Online (Sandbox Code Playgroud)

ControlSettingsView.swift

class ControlSettingsView: UITableViewController {

    let INPUT_CELL: String = "input_cell"

    override func viewDidLoad() {
        super.viewDidLoad()
        tableView.register(InputCell.self, forCellReuseIdentifier: INPUT_CELL)
    }

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        switch (section) {
        case 0:
            return 5
        default:
            return 0
        }
    }


    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        switch (indexPath.section) {
        case 0:
            let cell: InputCell = tableView.dequeueReusableCell(withIdentifier: INPUT_CELL, for: indexPath) as! InputCell
            return cell
        default:
            return tableView.dequeueReusableCell(withIdentifier: INPUT_CELL, for: indexPath)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

输入单元格.swift

class InputCell: UITableViewCell {

    @IBOutlet weak var cell_input: UITextField!
    @IBOutlet weak var cell_title: UILabel!

}
Run Code Online (Sandbox Code Playgroud)

我希望在表格视图中显示 5 个自定义表格视图单元格,但是我只得到 5 个空单元格,我可以看到这些单元格在那里,因为如果我点击它们,它们就可以被选择。

我无法理解为什么该单元格不是自定义单元格而是一个空单元格。

Raj*_*r R 4

故事板中有表视图控制器和原型单元。但是您正在以编程方式创建视图控制器

let v = ControlSettingsView()
Run Code Online (Sandbox Code Playgroud)

因此原型细胞属性将为零。使用故事板标识符创建视图控制器实例

确保您已ControlSettingsView为视图控制器设置故事板标识符

if let vc = self.storyboard?.instantiateViewController(withIdentifier: "ControlSettingsView") as? ControlSettingsView {
    self.navigationController?.pushViewController(vc, animated: true)
}
Run Code Online (Sandbox Code Playgroud)

如果故事板中有 tableview 单元格,请不要使用register(_:forCellReuseIdentifier:)方法。