Как переопределить инициализатор UIView в Swift 1.0

Свифт (1.0) наследует меня за рамки веры. Я могу поверить, что нужно спросить что-то такое же простое, как это, но я не могу понять это. У меня есть свой пользовательский вид, который я хочу создать программно с init (frame: CGRect), а также загрузить его из панели рассказов, в этом случае для инициализации следует использовать init (coder aDecoder: NSCoder). в обоих случаях я хочу вызвать свой собственный метод настройки. Например:

import UIKit

class CustomView: UIView {

    override convenience init(frame: CGRect) {
        super.init(frame: frame)
        self.myCustomSetup()
    }

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        self.myCustomSetup()
    }

    func myCustomSetup() {
        self.backgroundColor = UIColor.redColor()
    }
}

это не работает, из быстрой документации я понимаю, что должен быть только один назначенный инициализатор для класса, который вызываются всеми инициализаторами удобства. В случае UIView это должно быть init (coder aDecoder: NSCoder). Однако я не могу создать aDecoder: NSCoder в init(frame: CGRect), я не могу передать nil как необязательный. Что мне делать? Как я могу переопределить их оба?

Ответ 1

Класс должен иметь как минимум один назначенный инициализатор. Он может иметь более одного.

Все, что вам нужно сделать, чтобы заставить ваш код работать, - это удалить ключевое слово convenience из init(frame: CGRect).