Ios 空的水平表格单元格

Ios 空的水平表格单元格,ios,uitableview,swift,Ios,Uitableview,Swift,我一直在关注(并转换为swift)Ray Wenderlich教程(),该教程介绍如何使用水平表创建接口。我的应用程序加载但不显示单元格中的任何数据,如下所示: 我在项目中有三个swift文件:ArticleTableViewCell.swiftHorizontalTableViewCell.swiftArticleListViewController.swift // ArticleTableViewCell.swift // HorizontalTables import UIKit

我一直在关注(并转换为swift)Ray Wenderlich教程(),该教程介绍如何使用水平表创建接口。我的应用程序加载但不显示单元格中的任何数据,如下所示:

我在项目中有三个swift文件:
ArticleTableViewCell.swift

HorizontalTableViewCell.swift

ArticleListViewController.swift

// ArticleTableViewCell.swift
// HorizontalTables

import UIKit

class ArticleTableViewCell: UITableViewCell {
    var thumbnail: UIImageView!
    var titleLabel: UILabel!

    override init(frame: CGRect) {
        super.init(frame: frame)

        var frameA: CGRect = CGRectMake(3, 3, 100, 314)
        thumbnail = UIImageView(frame: frameA)
        thumbnail.opaque = true
        self.contentView.addSubview(thumbnail)

        var frameB: CGRect = CGRectMake(0, thumbnail.frame.size.height * 0.632, thumbnail.frame.size.width, thumbnail.frame.size.height * 0.37)
        titleLabel = UILabel(frame: frameB)
        titleLabel.opaque = true
        titleLabel.backgroundColor = UIColor.clearColor()
        titleLabel.textColor = UIColor.blackColor()
        titleLabel.numberOfLines = 2
        titleLabel.font = UIFont(name: "Helvetica Neue", size: 12)
        thumbnail.addSubview(titleLabel)

        self.transform = CGAffineTransformMakeRotation(CGFloat(M_PI) * 0.5)
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override func awakeFromNib() {
        super.awakeFromNib()
        // Initialization code
    }

    func reuseIdentifier() -> String {
        return "ArticleCell"
    }

    override func setSelected(selected: Bool, animated: Bool) {
        super.setSelected(selected, animated: animated)
        // Configure the view for the selected state
    }

}



有没有想过为什么tableView单元格没有数据?

将初始化
UITableViewController
。同时,调用委托方法和数据源方法进行初始化。此时,您将只能从
UITableViewCell
的原型中获得您所拥有的。因此,在成功分发数据后,您必须调用
reloadData

问题在于您使用的是
dequeueReusableCellWithIdentifier
。它甚至不使用
HorizontalTableViewCell(frame:CGRect)
初始化TableViewCell,除非您手动这样做。你应该这样做:

var cell = tableView.dequeueReusableCellWithIdentifier("CellIdentifier", forIndexPath: indexPath) as? HorizontalTableViewCell

if cell == nil {
    cell = HorizontalTableViewCell(frame: CGRectMake(0, 0, tableView.frame.size.width, tableView.frame.size.height))
}
与ArticleTableViewCell相同:

var cell = tableView.dequeueReusableCellWithIdentifier("ArticleCell", forIndexPath: indexPath) as? ArticleTableViewCell
if cell == nil {
    cell = ArticleTableViewCell(frame: CGRectMake(0, 0, 106, 106))
}

您可以尝试在单元格中使用此init函数

initWithStyle:reuseIdentifier:

看起来您没有将单元格注册到tableview。如果您使用的是故事板,则需要在其中输入单元标识符。如果是XIBs,则需要首先将该类注册到tableview:


tableView.registerClass(ArticleTableViewCell.self,ForcellReuseAndIdentifier:“ArticleCell”)

您正在尝试在ArticlesTable的每一行上显示水平表视图?尝试调用ViewWilloadData将显示错误,调用tableView.DequeueReuseAbleCellWithIdentifier(:forIndexPath:)如果单元格已在tableview中注册,则将始终返回该单元格。您可能会与原始方法tableView混淆。如果单元格不在重用池中,dequeueReusableCellWithIdentifier(:)将返回nil。只需使用自定义单元格而不使用UITableViewCell
var cell = tableView.dequeueReusableCellWithIdentifier("ArticleCell", forIndexPath: indexPath) as? ArticleTableViewCell
if cell == nil {
    cell = ArticleTableViewCell(frame: CGRectMake(0, 0, 106, 106))
}
initWithStyle:reuseIdentifier: