загрузка пользовательского слайдера из NIB против кода: при загрузке из кода нет подпредставлений - PullRequest
0 голосов
/ 01 апреля 2011

Я пытаюсь создать пользовательский UISlider. Мне нужно вставить подпредставления (например, ярлык) для себя. Я использую

[self insertSubview:_label1 atIndex:2];

способ сделать это. Все отлично работает, когда я создаю свой слайдер в IB и назначаю ему свой класс PWSlider.

Тем не менее, если я пытаюсь создать свой PWSlider из кода, при выполнении начальных операций отсутствуют подпредставления (добавляются подпредставления).

Для init в коде, который я переопределяю initWithFrame, для NIB-случая, который я пробовал, awakeFromNib и initWithCoder - тот же результат.

Когда я отлаживаю с

NSLog(@"subview count: %d", [self.subviews count]);

В результате получается, что при загрузке из NIB я получаю 3 подпредставления, загружается программно, я получаю 0.

Есть идеи?

1 Ответ

0 голосов
/ 01 апреля 2011

Я предполагаю, что ваш PWSlider унаследован от UISlider, а также предполагается, что у вас есть код, похожий на:

-(id)initWithFrame:(CGRect)r {
  self = [super initWithFrame:r];
  if(self) {
    // add your subviews here, starting from index 0
  }
  return self;
}

Вы отладили и проверили, что ваш initWithFrame вызывается?

Кроме того, если вам все равно, в каких местах находятся ваши подпредставления, используйте addSubview вместо insertSubview: atIndex:.

...