Подтвердить что ты не робот

Swift, super.init() Должен вызвать назначенный инициализатор ошибки суперкласса "UIView"

Я новичок в Swift. Я унаследовал проект. Я видел, как он работает на устройстве. Однако, когда я проверяю код, у него было много ошибок. Я смог убрать ошибки. Однако я сталкиваюсь с этим, что меня озадачивает. Проект также использует xib файлы. Вот код.

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

    override init(frame: CGRect) {
        super.init(frame: frame)
    }

   init(items:NSArray, viewController:AnyObject){
        super.init()
        //itemsArray = items
        itemsArray = items as [AnyObject]
        //commonInit(viewController as UIViewController)
        commonInit(viewController as! UIViewController)
    }

Я получаю ошибку в методе/функции init (items: NSArray, viewController: AnyObject). Ошибка указана на "super.init()". Он указывает: "Должен вызывать назначенный инициализатор ошибки" UIView "суперкласса"

Я искал, гуглингом, спрашивал других, и ничего не появилось. Могу ли я получить помощь по исправлению этой ошибки или, по крайней мере, почему эта ошибка происходит? Я бы хотел понять, чтобы стать лучшим разработчиком программного обеспечения.

Редактировать: Я хочу поблагодарить всех за их понимание и помощь. Я узнал, что проблема больше. Я сделал изменения, предложенные в super.init(frame: CGRect). Мне также пришлось изменить свойство массива, которое повлияло на функцию init.

4b9b3361

Ответ 1

UIView обозначенные инициализаторы:

init(frame: CGRect)
init(coder aDecoder: NSCoder)

Вы вызываете super.init(), который является инициализатором, унаследованным от его суперкласса NSObject. Вместо этого используйте один из этих инициализаторов, как это предлагает компилятор.

Ответ 2

В сообщении об ошибке вы можете вызвать только назначенный инициализатор суперкласса.

Чтобы решить эту проблему, вам нужно позвонить: super.init(frame: frame) вместо super.init()