Почему мои свойства слоя UIView не устанавливаются при вызове из initWIthCoder: (NSCoder *) aDecoder? - PullRequest
9 голосов
/ 02 марта 2011

У меня есть собственный класс View, который создает подклассы UIView.

Это представление загружается через nib-файл в ViewController через:

[[NSBundle main] loadNibNamed:@"MyCustomView" owner:self options:nil];

Внутри MyCustomView.h (который правильно подключен в IB как класс Main Views) У меня есть несколько связанных свойств subview:

@interface MyCustomView : UIView <UITextFieldDelegate> {
....
@public

UIView *backgroundLayer; // a subview of the Main View inside the nib
....
}

@property (nonatomic, retain) IBOutlet UIView *backgroundLayer;

Эта розетка правильно подключена в Интерфейсном Разработчике.

Внутри MyCustomView.m У меня есть следующая реализация:

#import <quartzcore/QuartzCore.h>

@implementation MyCustomView

@synthesize backgroundLayer;

- (id)initWithCoder:(NSCoder *)aDecoder {
   self = [super initWithCoder:aDecoder];
   if (self) {
      ....
      self.backgroundLayer.layer.cornerRadius = 12.0f;
      self.backgroundLayer.layer.borderColor = [UIColor lightGrayColor].CGColor;
      self.backgroundLayer.layer.maskToBounds = YES;
      ....
   }

НЕТ из этих настроек backgroundLayer.layer применяются. Когда я запускаю в симуляторе, пользовательский вид выглядит точно так же, как в NIB без каких-либо этих модов? Что мне не хватает? Я звоню не в том месте?

1 Ответ

16 голосов
/ 17 марта 2011

Правильный ответ на этот вопрос заключался в использовании метода:

 -(void)awakeFromNib {
    ......
 }
...