ios - 当单元格有值时,Swift TableViewCell 为空

标签 ios swift uitableview model-view-controller

我有一个带有一些简单标签和 UIImage 的自定义单元格。一切似乎都设置正确,单步执行调试器显示一切都在获取值,甚至使用调试器中的打印显示标签有文本。但是,执行时我的 TableView 仍然为空。我已经看这个问题太久了,无法找出问题所在。

这是单元格代码

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

}

下面是一些图像,显示单元格不为空的调试位置,并打印出具有值的标签,但在模拟过程中未显示。

http://imgur.com/a/dBkpe

这是一张显示原型(prototype)电池的图像。该单元格具有正确的类集和标识符。

http://imgur.com/PKtFTeQ

最后一张图像显示原型(prototype)单元链接到 CurrentFileCell 中的标签。

http://imgur.com/nW0QUjM

如有任何帮助,我们将不胜感激。我尝试过重新创建一切,但仍然感到困惑,因为似乎一切都是它应该的样子。

最佳答案

您必须为表格 View 实现“heightForRowAtIndexPath”方法

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {

        let height:CGFloat = 75
        return height

}

关于ios - 当单元格有值时,Swift TableViewCell 为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38056959/

相关文章:

ios - 为什么使用协议(protocol),而不是直接调用方法?

ios - 如何在 UILocalNotification 的上下文中替换已弃用的 NSWeekCalendarUnit?

ios - 将 UILabel 在 UITableView header 中居中

objective-c - Objective-C : Can the Countdown timer Picker be used as a hour/min picker?

ios - 静态库和 Swift

ios - Swift/如何设置(和加载)一个新的 Root View Controller

ios - 如果行高为 UITableViewAutomaticDimension,则 UITableViewWrapperView 大小不会根据内容更改

ios - SwiftUI 访问在 ForEach 循环中创建的 View

ios - fatal error : Index out of range

ios - 'NSInternalInconsistencyException',原因 : 'Could not load NIB in bundle: ...' with name