我有一个带有单个原型单元的UITableViewController。单元格中有一个标签和一个文本字段,并且其类设置为InputCell。加载表格视图时,该单元似乎已出队,但显示为默认的空单元。
我检查了以下内容:
func gototSettingsFor(control: EditableUIElement) {
let v = ControlSettingsView()
self.navigationController?.pushViewController(v, animated: true)
}
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)
}
}
}
class InputCell: UITableViewCell {
@IBOutlet weak var cell_input: UITextField!
@IBOutlet weak var cell_title: UILabel!
}
我希望在表格视图中显示5个自定义表格视图单元格,但是我只有5个空单元格,我可以看到那里的单元格,因为如果我点击它们,就可以选择它们。
我无法理解为什么该单元格不是自定义单元格而是空单元格。
答案 0 :(得分:4)
情节提要中有表格视图控制器和原型单元。但是您正在以编程方式创建视图控制器
let v = ControlSettingsView()
因此原型单元的属性将为零。使用情节提要标识符创建视图控制器实例
确保已为视图控制器设置情节提要标识符ControlSettingsView
if let vc = self.storyboard?.instantiateViewController(withIdentifier: "ControlSettingsView") as? ControlSettingsView {
self.navigationController?.pushViewController(vc, animated: true)
}
如果故事板中有表格视图单元,则不要使用register(_:forCellReuseIdentifier:)方法。
答案 1 :(得分:0)
因为您尚未设置单元格的任何属性,所以除了空白单元格之外,什么都不会显示。考虑以下代码:
let cell: InputCell = tableView.dequeueReusableCell(withIdentifier: INPUT_CELL, for: indexPath) as! InputCell
return cell
您现在正在做什么::您当前正在获得一个已出队的单元格,并返回它。但是,您尚未设置任何单元格属性。
您需要做什么:您需要设置一些属性,例如文本或图像,如下所示:
cell.textLabel = "MY TEXT HERE"
或者,根据您的自定义InputCell
,您可以这样做:
cell.cell_title = "MY TEXT HERE"