Как инициализировать пустой объект пользовательского подкласса UIImageView - PullRequest
0 голосов
/ 05 августа 2020

У меня есть собственный подкласс UIImageView, который запускает базовый c код, например, создание тени et c. Когда я не отменяю никаких init, все работает нормально. Я могу создать пустой CustomImageView() так же, как и пустой UIImageView(). В тот момент, когда я добавляю все необходимые переопределения, я больше не могу создавать пустой объект.

Я получаю следующую ошибку:

Невозможно вызвать инициализатор для типа 'ProfilePictureImageView' без аргументы

с предложением:

  1. Существуют перегрузки для 'ProfilePictureImageView' с этими частично совпадающими списками параметров: (coder: NSCoder), (frame: CGRect) , (image: UIImage?)

Я создаю пустой объект в моем контроллере представления следующим образом:

var customImageView = CustomImageView()

И мой собственный подкласс UIImageView выглядит так:

class CustomImageView: UIImageView {
    
    override init(image: UIImage?) {
        super.init(image: image)
    }
    
    override init(frame: CGRect) {
        super.init(frame: frame)
    }
    
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    override func layoutSubviews() {
        super.layoutSubviews()
    }


// Followed by my custom variables and methods.

}

Я попытался добавить следующее, предполагая, что мне не хватает какого-то пустого init. Но и это не сработало.

override init() {
    super.init()
}

1 Ответ

1 голос
/ 05 августа 2020

Необходимо создать метод convenience init.

class CustomImageView: UIImageView {
    //...
    convenience init() {
        self.init(frame: .zero) // or self.init(image: nil)
    }
}
...