我正在尝试从笔尖创建自定义表格视图单元格。我在这里指的是这篇文章。我面临两个问题。
我创建了一个.xib文件,并将UITableViewCell对象拖到该文件上。我创建了的子类,UITableViewCell
并将其设置为单元格的类,将Cell设置为可重用的标识符。
import UIKit
class CustomOneCell: UITableViewCell {
@IBOutlet weak var middleLabel: UILabel!
@IBOutlet weak var leftLabel: UILabel!
@IBOutlet weak var rightLabel: UILabel!
required init(coder aDecoder: NSCoder!) {
super.init(coder: aDecoder)
}
override init(style: UITableViewCellStyle, reuseIdentifier: String!) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
在UITableViewController中,我有以下代码,
import UIKit
class ViewController: UITableViewController, UITableViewDataSource, UITableViewDelegate {
var items = ["Item 1", "Item2", "Item3", "Item4"]
override func viewDidLoad() {
super.viewDidLoad()
}
// MARK: - UITableViewDataSource
override func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return items.count
}
override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
let identifier = "Cell"
var cell: CustomOneCell! = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
if cell == nil {
tableView.registerNib(UINib(nibName: "CustomCellOne", bundle: nil), forCellReuseIdentifier: identifier)
cell = tableView.dequeueReusableCellWithIdentifier(identifier) as? CustomOneCell
}
return cell
}
}
这段代码没有错误,但是当我在模拟器中运行它时,它看起来像这样。
在情节提要中的UITableViewController中,我没有对单元执行任何操作。空白标识符,无子类。我尝试将Cell标识符添加到原型单元中,然后再次运行,但得到的结果相同。
我遇到的另一个错误是,当我尝试在UITableViewController中实现以下方法时。
override func tableView(tableView: UITableView!, willDisplayCell cell: CustomOneCell!, forRowAtIndexPath indexPath: NSIndexPath!) {
cell.middleLabel.text = items[indexPath.row]
cell.leftLabel.text = items[indexPath.row]
cell.rightLabel.text = items[indexPath.row]
}
正如我所提到的文章中所示,我改变了cell
参数的类型形式UITableViewCell
来CustomOneCell
这是我的UITableViewCell的子类。但是我收到以下错误,
使用选择器'tableView:willDisplayCell:forRowAtIndexPath:'的重写方法具有不兼容的类型'(UITableView !, CustomOneCell !, NSIndexPath!)->()'
有人知道如何解决这些错误吗?这些似乎在Objective-C中工作正常。
谢谢。
编辑:我只是注意到,如果我将模拟器的方向更改为横向并将其重新设置为纵向,则会出现单元!我仍然不知道发生了什么。如果您有时间快速浏览,我在这里上传了一个Xcode项目,演示了该问题。