У меня есть виджет пользовательского интерфейса:
class ProfileBubbleCell: UITableViewCell {
var roundImageView: UIImageView?
override func awakeFromNib() {
super.awakeFromNib()
self.contentView.backgroundColor = Color.red
initImage()
}
private func initImage(){
let imageView = UIImageView()
let width = self.frame.width
let height = self.frame.height
let img_width = height - 4
let img_height = img_width
let y = 2
let x = width/2 - img_width/2
imageView.frame = CGRect(
x: x, y: CGFloat(y), width: img_width, height: img_height
)
let rounded = imageView
.makeRounded()
.border(width:2.0, color:Color.white.cgColor)
// attach and save reference
self.addSubview(rounded)
self.roundImageView = rounded
}
private func loadImage(){
// @TODO: call parent function
}
}
И в loadImage
я хотел бы вызвать представление загрузки родительского изображения, и когда изображение загружено, отобразить его в roundImageView
. ProfileBubbleCell
действительно должен быть как можно более общим c, его единственная задача - сделать изображение круглым и центрировать его.
Это похоже на очень распространенный вариант использования, и я хотел бы delegate
задача загрузки изображения для родителя, но я не уверен, как express это сделать.
В родительском элементе я создаю экземпляр ячейки следующим образом:
let cell = tableView.dequeueReusableCell(withIdentifier: "ProfileBubbleCell", for: indexPath) as! ProfileBubbleCell