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

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

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

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()中 ,设计只执行一次,所以这是更好的一个?

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

希望这可以帮助

丹尼尔