Я не уверен, если это возможно, однако у меня есть несколько пользовательских UITableViewCells
, каждый из которых содержит некоторые общие компоненты.
Например, все они содержат UIIMageView
, который представляетаватар пользователя:
fileprivate var messageAvatar: UIImageView = {
let imageView = UIImageView(frame: .zero)
imageView.layer.cornerRadius = 35 / 2
imageView.layer.masksToBounds = true
imageView.image = #imageLiteral(resourceName: "user_avatar")
return imageView
}()
Вместо того, чтобы повторять это в нескольких местах, я подумал, что мог бы создать Protocol
с этими общими обязательными свойствами и использовать расширение, чтобы обеспечить для них стандартную реализацию по умолчанию.:
protocol MyCustomCellProtocol: class {
var avatar: UIImageView { get set }
}
extension MyCustomCellProtocol {
var avatar: UIImageView {
let imageView = UIImageView(frame: .zero)
imageView.layer.cornerRadius = 35 / 2
imageView.layer.masksToBounds = true
return imageView
}
}
Чего я не понимаю, так это как я могу их инициализировать или использовать в своих пользовательских ячейках.
Это правильный подход?