Интерфейсный конструктор показывает все @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
Я знаю, что это может быть не тот ответ, который вы ищете, но это просто обходной путь.