Переопределить titleLabel из UIButton с помощью подкласса UILabel - PullRequest
0 голосов
/ 25 мая 2018

У меня есть подкласс UILabel:

class MyLabel: UILabel {}

Я хочу использовать этот ярлык в качестве titleLabel UIButton:

class MyButton: UIButton { 

    var label: MyLabel!

    override open var titleLabel: MyLabel? {
        get {
            return label
        }
    }
}

Он компилируется в XCode, но яхочу использовать это в рамках с Cocoapods.Когда я пытаюсь отправить его в хранилище, он проверяет код.Выдает ошибку:

WARN |[iOS]:тип свойства 'MyLabel * _Nullable' несовместим с типом 'UILabel * _Nullable', унаследованным от 'UIButton'

Как переопределить titleLabel?Это возможно с подклассом?

1 Ответ

0 голосов
/ 25 мая 2018

Измените свой класс MyButton так, чтобы ваш возвращаемый тип titleLabel был UILabel?

class MyButton: UIButton {

    var label: MyLabel!

    override open var titleLabel: UILabel? {
        get {
            return label
        }
    }
}

Это отключает предупреждение.Но если вы хотите получить доступ к titleLabel с функциональностью MyLabel, вам придется разыграть его следующим образом:

if let myLabel = button.titleLabel as? MyLabel {
            print(myLabel.classForCoder)
        }

Надеюсь, этот хак решит проблему.

...