Я имею это в MyClass.h файле:IBInspectable свойство не имеет свое значение в initWithCoder: инициализатору
#import <UIKit/UIKit.h>
IB_DESIGNABLE
@interface MyClass : UIView
@end
и это код из файла .m:
-(void)awakeFromNib{
[super awakeFromNib];
NSLog(@"This works %lud",(unsigned long)self.max);
}
-(instancetype)initWithCoder:(NSCoder *)aDecoder{
if ((self = [super initWithCoder:aDecoder])){
NSLog(@"This doesn't work %lud",(unsigned long)self.max);
}
return self;
}
В awakeFromNib метод, я получаю правильное значение, установленное в IB. В initWithCoder: я получаю это значение равным нулю.
Какое время для проверки значения, установленного в IB, для этого свойства?
Это, как я определил свойство в файле .m:
@interface MyClass()
@property (nonatomic) IBInspectable NSUInteger max;
@end
Спасибо. Ну, я еще не понял, каким будет самый удобный способ использования моего класса, но идея такова: 1) Перетащите представление в раскадровку (и установите свой собственный класс в MyClass), 2) Введите значения контролируемых свойств. Также на основе этих свойств я генерирую некоторый дополнительный контент в своем пользовательском представлении (это не все визуальное определение в IB). Итак, при инициализации моего представления мне нужны значения тех свойств, которые определены в IB. Если у вас есть какие-либо предложения или намеки на этот поток, я все уши. :) – Whirlwind
Мой ответ остается тем же. Сделайте это в 'awakeFromNib', как вы уже вывели. Но то, что я хотел бы сделать, это подождать, пока контроллер представления не получит 'viewDidLoad'. Это происходит после создания представления, но до его ввода в интерфейс. Контроллер вида предположительно имеет ссылку на это представление, чтобы он мог сказать, что он завершил настройку. – matt