iOS在哪里放置自定义单元格设计? awakeFromNib或cellForRowAtIndexPath?

时间:2016-02-02 18:25:13

标签: ios swift performance uitableview custom-cell

所以,基本上我用笔尖制作了一个自定义单元格,希望我应用一些自定义设计,比如颜色和阴影。

我找到了两种应用样式的方法:

awakeFromNib():

override func awakeFromNib() {
    super.awakeFromNib()

    //Container Card Style
    self.container.layer.cornerRadius = 3
    self.container.setDropShadow(UIColor.blackColor(), opacity: 0.20, xOffset: 1.5, yOffset: 2.0, radius: 1.8)

    //Rounded thumbnail
    self.thumb_image.setRoundedShape()
    self.thumb_image.backgroundColor = UIColor.customGreyTableBackground()

    //Cell
    self.backgroundColor = UIColor.customGreyTableBackground()
    self.selectionStyle = .None
}

cellForRowAtIndexPath :(在tableView中希望显示单元格)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {

    //get cell type
    let cell = tableView.dequeueReusableCellWithIdentifier("searchResultCell", forIndexPath: indexPath) as! SearchResultCell

    //Container Card Style
    cell.container.layer.cornerRadius = 3
    cell.container.setDropShadow(UIColor.blackColor(), opacity: 0.20, xOffset: 1.5, yOffset: 2.0, radius: 1.8)

    //Rounded thumbnail
    cell.thumb_image.setRoundedShape()
    cell.thumb_image.backgroundColor = UIColor.customGreyTableBackground()

    //Cell
    cell.backgroundColor = UIColor.customGreyTableBackground()
    cell.selectionStyle = .None

    //cell data
    if(!data.isEmpty){
        cell.name_label.text = data[indexPath.row].name
        cell.thumb_url = data[indexPath.row].thumb_url
    }

    return cell
}

在性能方面,希望一个会更好?我注意到在 awakeFromNib()中,设计只执行一次,所以这是更好的一个?

1 个答案:

答案 0 :(得分:7)

正如你所提到的,awakeFromNib只被调用一次(当单元格被实例化时),如果它的设置类似于背景颜色和那些不会改变的东西那么它可以在那里进行,单元格自定义(单元格的数据是显示)应该在cellForRowAtIndexPath期间完成,所以你不应该检查数据是否为空,而是每次返回单元格时给它数据,这将允许你重用单元格并根据需要设置数据

希望这有帮助

丹尼尔