gpt4 book ai didi

ios - 为什么我的自定义 UITableViewCell 显示不正确?

转载 作者:搜寻专家 更新时间:2023-10-31 08:28:07 29 4
gpt4 key购买 nike

我有一个 UITableViewController,里面有一个原型(prototype)单元格。该单元格中有一个标签和一个文本字段,并将其类设置为 InputCell。当表格 View 加载时,该单元格似乎已出队,但显示为默认的空单元格。

我检查了以下内容:

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

从 Root View Controller 导航到我的设置 View 的函数

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

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)
}
}
}

输入单元.swift

class InputCell: UITableViewCell {

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

}

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

我不明白为什么单元格不是自定义单元格而是一个空单元格。

最佳答案

Storyboard中有 TableView Controller 和原型(prototype)单元格。但是您正在以编程方式创建 View Controller

let v = ControlSettingsView()

因此原型(prototype)单元格属性将为零。使用 Storyboard标识符创建 View Controller 实例

确保你已经为 View Controller 设置了 Storyboard标识符ControlSettingsView

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

并且不要使用 register(_:forCellReuseIdentifier:)如果 Storyboard中有 tableview 单元格,则方法。

关于ios - 为什么我的自定义 UITableViewCell 显示不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56062572/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com