最佳答案
我试图从一个笔尖创建一个自定义表视图单元格。我指的是这篇文章 给你。我面临两个问题。
我创造了一个。将一个 UITableViewCell 对象拖到 xib 文件上。我创建了 UITableViewCell
的一个子类,并将它设置为单元格的类,将 手机设置为可重用标识符。
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 中,我没有对单元格做任何操作。空白标识符,没有子类。我尝试将 手机标识符添加到原型单元格并再次运行它,但是得到了相同的结果。
我遇到的另一个错误是,当我试图在 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:’has compulated type’(UITableView! ,CustomOneCell! ,NSIndexPath!)-> ()’重写方法
有人知道如何解决这些错误吗? 这些在 Objective-C 中似乎工作得很好。
谢谢你。
编辑: 我刚刚注意到,如果我改变模拟器的方向,以横向,并把它回到肖像,细胞出现!我还是不明白发生了什么。我上传了一个 Xcode 项目 给你,如果您有时间快速查看一下,就会发现这个问题。