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