gpt4 book ai didi

ios - 具有以编程方式创建的 UITableView 的 Swift 自定义 UITableViewCell

转载 作者:可可西里 更新时间:2023-10-31 23:51:42 25 4
gpt4 key购买 nike

我正在尝试在我以编程方式创建的 UITableView 中使用自定义 TableViewCell 类,但我不明白为什么这不起作用。我已经使用了几次自定义 TableViewCell 类,没有任何问题(在 Storyboard 中设置类名),但在这里我没有 Storyboard 来设置应该用于生成单元格的类。

我这样做:

override func viewDidLoad() {
...
self.popupTableView.registerClass(CustomTableViewCellPopup.self, forCellReuseIdentifier: "popupTableViewCell")
...
}


func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCellWithIdentifier("popupTableViewCell") as CustomTableViewCellPopup
...
return cell
}

class CustomTableViewCellPopup: UITableViewCell {

var message: UILabel = UILabel()

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
}

required init(coder decoder: NSCoder) {
super.init(coder: decoder)
}

override func awakeFromNib() {
super.awakeFromNib()

println("I'm running!")
self.message.frame = CGRectMake(0, 0, 10, 10);
self.message.backgroundColor = UIColor.brownColor()
self.addSubview(self.message)
}

}

println() 输出永远不会出现。 TableView 在没有额外的 UILabel(消息)的情况下呈现。就像开箱即用的 UITableViewCell。

以相同的方式(没有 registerClass()),我正在运行一个 TableView,其中包含 Storyboard 中的自定义单元格(直接在 Storyboard Inspector 中定义的类名),没有任何问题。

您知道为什么不使用自定义类吗?

最佳答案

awakeFromNib 不会被调用,除非单元格是从 xib 或 Storyboard加载的。将您的自定义代码从 awakeFromNib 移至 initWithStyle:reuseIdentifier:,因为当您调用其 dequeueReusableCellWithIdentifier: 方法时,这是 tableView 使用的初始化器

关于ios - 具有以编程方式创建的 UITableView 的 Swift 自定义 UITableViewCell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28389405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com