gpt4 book ai didi

ios - 表格 View 单元格未在模拟器中显示

转载 作者:行者123 更新时间:2023-11-28 15:11:45 27 4
gpt4 key购买 nike

我似乎已经完成了我应该做的一切,但是当我使用两个不同的 UITableViewCell 子类时,我的表格 View 单元格没有显示,每个子类都有一个 xib 文件,除了我分配给 textLabel!.text 的整数值在 tableView(_:cellForRowAt:) 的末尾,就在 return 语句之前。我做错了什么?

这是我的代码:

import UIKit

class DetailTableViewController: UITableViewController {

let items = [0, 1]

override func viewDidLoad() {
super.viewDidLoad()

tableView.register(DueDateSwitchTableViewCell.self, forCellReuseIdentifier: "DueDateSwitchTableViewCell")

let xibDueDateSwitchTableViewCell = UINib(nibName: "DueDateSwitchTableViewCell", bundle: Bundle.main)

tableView.register(xibDueDateSwitchTableViewCell, forCellReuseIdentifier: "DueDateSwitchTableViewCell")

tableView.register(DueDatePickerTableViewCell.self, forCellReuseIdentifier: "DueDatePickerTableViewCell")

let xibDueDatePickerTableViewCell = UINib(nibName: "DueDatePickerTableViewCell", bundle: Bundle.main)

tableView.register(xibDueDatePickerTableViewCell, forCellReuseIdentifier: "DueDatePickerTableViewCell")

}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}

// MARK: - Table view data source

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

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

print("tableView(_:cellForRowAt:)", "indexPath.row=", indexPath.row)

let cell = UITableViewCell()

switch indexPath.section {

case 0:

print("\tcase 0")

let cell = tableView.dequeueReusableCell(withIdentifier: "DueDateSwitchTableViewCell", for: indexPath) as! DueDateSwitchTableViewCell

cell.label.text = String(items[indexPath.section].hashValue)

cell.backgroundColor = UIColor.yellow

case 1:

print("\tcase 1")

let cell = tableView.dequeueReusableCell(withIdentifier: "DueDatePickerTableViewCell", for: indexPath) as! DueDatePickerTableViewCell

cell.label.text = String(items[indexPath.section].hashValue)

cell.datePicker.date = Date()

default:

break

}

cell.textLabel!.text = String(items[indexPath.section].hashValue)

return cell

}

}

最佳答案

您在每个 case 语句中创建的单元格将被忽略并闲置。您的 return cell 行返回第一个 cell 变量,这是您的空单元格。

由于您只有两个可能的单元格,我建议按如下方式重做您的代码:

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if indexPath.section == 0 {
let cell = tableView.dequeueReusableCell(withIdentifier: "DueDateSwitchTableViewCell", for: indexPath) as! DueDateSwitchTableViewCell
cell.label.text = String(items[indexPath.section].hashValue)
cell.backgroundColor = UIColor.yellow

return cell
} else {
let cell = tableView.dequeueReusableCell(withIdentifier: "DueDatePickerTableViewCell", for: indexPath) as! DueDatePickerTableViewCell
cell.label.text = String(items[indexPath.section].hashValue)
cell.datePicker.date = Date()

return cell
}
}

您还需要修复您的 viewDidLoad。每个重用标识符应该只调用一次 register。你们各有两个。

关于ios - 表格 View 单元格未在模拟器中显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47524653/

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