Kyl*_*lan 8 storyboard uitableview ios swift
我有一个自定义 UITableViewCell 子类,其中包含一个用于 UILabel 的简单 IBOutlet 设置。
class SegmentCell: UITableViewCell {
@IBOutlet weak var test: UILabel!
override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
test.text = "Some Text"
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Run Code Online (Sandbox Code Playgroud)
确信我已正确设置所有内容并遵循其他答案,但 UILabel 始终为零。
视图控制器:viewDidLoad:
self.tableView.registerClass(SegmentCell.self, forCellReuseIdentifier: "Cell")
Run Code Online (Sandbox Code Playgroud)
cellForForAtIndexPath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! SegmentCell
return cell
}
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
Yod*_*ama 11
由于您使用的是 Xib 文件,因此您必须注册,
tableView.register(UINib(nibName: "yourNib", bundle: nil), forCellReuseIdentifier: "CellFromNib")
Run Code Online (Sandbox Code Playgroud)
想想,如果只注册类,系统将不知道它的 Xib。这对我来说很有效。
根据您注册单元的方式,它不会从故事板或 xib 文件加载它。它将仅调用该 init 方法。您的 init 方法不会创建标签,因此它始终是nil.
您还应该使用dequeueReusableCellWithIdentifier(_:forIndexPath:)而不是dequeueReusableCellWithIdentifier(_:). 后者早于情节提要,并且会返回,nil除非您之前使用该标识符创建了一个单元格并将其返回。
最后,正在调用的 init 方法tableView不是您已实现的方法,否则应用程序test.text = ...在尝试解开nil可选值时会崩溃。
| 归档时间: |
|
| 查看次数: |
6089 次 |
| 最近记录: |