Я хочу применить протоколно-ориентированное программирование в одном из моих приложений. Я создал протокол под названием «CustomAnchor», чтобы избавиться от огромного количества команд, необходимых для Autolayout. Но когда я назначаю этот протокол константе, например, profileImage, контроллер получает следующую ошибку:
Класс 'ProfileController' не имеет инициализаторов
На константе я получаю это серое предупреждение:
- Сохраненное свойство 'profileImageView' без начального значения предотвращает синтезированные инициализаторы
Вот так выглядит код: (Использование POP внизу)
class ProfileController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.white
self.navigationItem.title = "Profil"
self.navigationItem.largeTitleDisplayMode = .never
fillData()
setupView()
confBounds()
}
func fillData() {
profileImageView.image = UIImage(named: "test")
}
func setupView() {
view.addSubview(profileImageView)
}
func confBounds() {
profileImageView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
profileImageView.anchor(top: self.view.topAnchor, left: nil, bottom: nil, right: nil, paddingTop: 60, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 140, height: 140)
}
let profileImageView: UIImageView, CustomAnchor = { () -> UIImageView in
let pView = UIImageView()
pView.contentMode = .scaleAspectFill
pView.clipsToBounds = true
pView.image = UIImage(named: "test")
return pView
}()
}