cellForRow中的代码在单元格类中的代码之后调用

时间:2017-02-15 02:56:46

标签: swift uitableview

我对使用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

我该怎么做?

3 个答案:

答案 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类