【发布时间】:2016-10-29 15:28:19
【问题描述】:
我有一个带有一些简单标签和 UIImage 的自定义单元格。一切似乎都设置正确,单步调试调试器显示所有内容都在获取值,甚至使用调试器中的打印显示标签有文本。但是我的表格视图在执行时仍然是空的。我已经看这个太久了,无法弄清楚问题所在。
这是单元格代码
class CurrentFileCell: UITableViewCell {
@IBOutlet weak var nameLabel: UILabel!
@IBOutlet weak var statusImage: UIImageView!
@IBOutlet weak var dateLabel: UILabel!
var currentContent: AircraftContent! {
didSet{
setStyles(Constants.appStyleSetting)
self.nameLabel.text = currentContent.contentName
self.dateLabel.text = currentContent.contentStatus
self.statusImage.image = UIImage(named: "color_label_circle_green")
}
}
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
private func setStyles(settings: StyleSettings) {
let tableFont = UIFont(name: settings.bodyFont, size: CGFloat(settings.tableFontSize))
nameLabel.font = tableFont
dateLabel.font = tableFont
// Text color
let tableFontColor = settings.tableFontColor
nameLabel.textColor = tableFontColor
dateLabel.textColor = tableFontColor
}
这是 ViewController 代码,里面有一个 tableview。
class CurrentFilesViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {
var content: AircraftContent?
@IBOutlet weak var currentFiles: UILabel!
@IBOutlet weak var downloadingLabel: UILabel!
@IBOutlet weak var readyLabel: UILabel!
@IBOutlet weak var tableView: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.delegate = self
self.tableView.dataSource = self
self.content = loadContent()
setStyles(Constants.appStyleSetting)
//self.tableView.reloadData()
// Do any additional setup after loading the view.
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 1
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("CurrentFileCell", forIndexPath: indexPath) as? CurrentFileCell
cell?.currentContent = content
return cell!
}
func loadContent() -> AircraftContent {
return (NSKeyedUnarchiver.unarchiveObjectWithFile(AircraftContent.ArchiveURL.path!) as? AircraftContent)!
}
private func setStyles(settings: StyleSettings) {
let titleFont = UIFont(name: settings.bodyFont, size: CGFloat(settings.titleFontSize))
let key = UIFont(name: settings.bodyFont, size: CGFloat(settings.tableFontSize))
currentFiles.font = titleFont
downloadingLabel.font = key
readyLabel.font = key
// Text color
let titleFontColor = settings.titleFontColor
currentFiles.textColor = titleFontColor
downloadingLabel.textColor = titleFontColor
readyLabel.textColor = titleFontColor
}
这里有一些图片显示了调试位置,其中单元格不为空,并且还打印出具有值但在模拟过程中未显示的标签。
这是显示原型单元的图像。该单元格具有正确的类集以及标识符。
最后一张图片显示原型单元格链接到 CurrentFileCell 中的标签。
对此的任何帮助将不胜感激。我尝试重新创建所有内容,但仍然感到困惑,因为似乎一切都应该是这样。
【问题讨论】:
-
你的数据数组在哪里?
-
你试过在主线程中执行 currentContent 的 didSet 吗?
-
我没有数据数组,现在只有一个变量。 @Ozgur Ersil
-
你到底是什么意思?我不应该设置它,而只更新单元格的对象。 @Caelan
-
确保您也将自定义类注册到 tableView。
标签: ios swift uitableview model-view-controller