Интерфейсный конструктор показывает все @IBInspectable в каскаде

Возможно, я слишком сложен, но вот что я хочу:

@IBDesignable
class A: UIView {
    @IBInspectable var title: String = "" {
        didSet {
            setNeedsLayout()
        }
    }
}

@IBDesignable
class B: UIView {
    var firstView: A = A()
    var secondView: A = A()
}

Класс B имеет 2 класса @IBDesignable, поэтому, если я хочу настроить B непосредственно в Интерфейсном Разработчике, я не могу, поскольку у меня нет доступа к 2 классам А.

Сначала я создаю протокол для перечисления всех элементов класса A, но когда представлению нужно 2 или более элемента класса A, я не могу использовать это.

У кого-нибудь есть идея иметь только 1 класс B в моей раскадровке и можно ли настроить оба класса A?

1 ответ

Не уверен, что это возможно. Обычно это невозможно, даже если вы используете классы Apple Library, например, UIButton имеет UIView, а также UILabel.

Хотя эти разные классы и некоторые вещи возможны путем переопределения, как описано здесь

Но я могу дать вам взломать здесь. В объект, который вы создаете для объекта B в раскадровке, вы можете добавить User Defined Runtime Attributes следующее -

firstView.title & secondView.title

Я знаю, что это может быть не тот ответ, который вы ищете, но это просто обходной путь.

Другие вопросы по тегам