【发布时间】:2016-01-22 03:20:36
【问题描述】:
我有一个自定义 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")
}
}
确信我已经按照其他答案正确设置了所有内容,但 UILabel 始终为零。
视图控制器: viewDidLoad:
self.tableView.registerClass(SegmentCell.self, forCellReuseIdentifier: "Cell")
cellForForAtIndexPath
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! SegmentCell
return cell
}
- 单元格设置为自定义
- 重用标识符正确
- Cells 类是 SegmentCell
- Tableview 内容是动态原型
我错过了什么?
【问题讨论】:
-
不需要在 viewDidLoad 上调用 self.tableView.registerClass(SegmentCell.self, forCellReuseIdentifier: "Cell"),只需在 Mainstoryboard 上将prototypeCells 类设置为“SegmentCell”即可。
-
我意识到这是一个非常古老的问题,但它目前没有答案,我碰巧遇到了它,因为我遇到了类似的问题。在您的情况下,我认为
weak var是关键 - 如果您的SegmentCell是唯一拥有对UILabel的引用的东西,那将不会影响保留计数,因此标签将被释放因为没有人强烈提及它。当您尝试设置.text时,它已经消失了。
标签: ios swift uitableview storyboard