我对使用cellForRowAt
执行代码的顺序有疑问这是我的cellForRowAt函数
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! MyTableViewCell
print(1)
return cell
}
这是我的MyTableViewCell.swift
中的代码override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
super.init(style: style, reuseIdentifier: reuseIdentifier)
print(2)
}
当我运行我的代码时。控制台日志打印此结果
2
1
因此,我的单元格类中的代码在cellForRowAt中的代码之前运行。
但是,我希望我的单元格中的代码在cellForRowAt中的代码之后运行。 我想要这样的结果:
1
2
我该怎么做?
答案 0 :(得分:1)
在MyTableViewCell.swift
添加功能:
func doMyStuff() {
print(2)
}
再次回到cellForRowAtIndexPath
:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! MyTableViewCell
print(1)
cell.doMyStuff()
return cell
}
答案 1 :(得分:0)
尝试不是在init函数中,而是在awakeFromNib
中override func awakeFromNib(){
super.awakeFromNib()
//stuff
}
答案 2 :(得分:0)
您可以使用样式规范创建自定义单元格类,然后在cellForRowAtIndexPath中实例化单元格时,可以使用自定义单元格类。所以,像这样:
myCell = tableView.dequeueReusableCellWithIdentifier("topicCell") as! topicTableViewCell
其中topicTableViewCell是您自己的UITableViewCell类