У меня есть приложение, которое пользователи используют для записи своих измерений тела. В настоящее время он использует UIPickerView, но я хочу написать настраиваемый элемент управления, который больше похож на рулетку (плоскую, не-skeu!).Динамический подкласс для управления в раскадровке
Пользователи могут использовать либо метрические, либо имперские измерения, и я хочу, чтобы для каждого представления использовался другой класс, поскольку текущий код для UIPicker вместе с ними очень грязный.
Я также хочу использовать конструктор интерфейса, если это возможно.
Так что я хочу, чтобы построить что-то вроде этого:
, а затем в IB я выбираю класс верхнего уровня. В viewDidLoad я хочу выбрать тип подкласса для загрузки.
Мой вопрос на самом деле, я принимаю неправильное направление здесь? По мере того как я начал реализовывать это, я понял, что элементы управления инициализируются с помощью awakeFromNib до того, как будет обработано viewDidLoad.
Каков наилучший способ добиться того, что мне нужно? Или я слишком упрощаю? Каков самый простой подход, который пойдет в направлении, в котором я хочу идти?
Спасибо @ Raúl, который выглядит как хороший подход. Есть ли способ передать значение времени выполнения из контроллера представления в HorizontalSlider до вызова awakeFromNib? В противном случае мне придется добавить некоторые дополнительные зависимости в HorizontalSlider. – Lewis42
Фактически передача сообщений между объектами до 'awakeFromNib' не рекомендуется, поскольку порядок, в котором объекты создаются, не гарантируется. Вы можете прочитать больше об этом в справочной системе 'awakeFromNib'. Возможно, вы могли бы реализовать пользовательский метод initWithCoder: 'или' init' в 'HorizontalSilder', чтобы делать то, что вы хотите? Только один вызывается перед 'awakeFromNib' (если класс соответствует протоколу' NSCoding', вызывается 'initWithCoder:', в противном случае используется метод 'init') –