从NIB加载自定义滑块vs代码:从代码加载时不存在子视图

时间:2011-04-01 15:36:04

标签: iphone ios4 initialization subviews

我正在尝试创建自定义UISlider。我需要向自己插入子视图(如标签)。我正在使用

[self insertSubview:_label1 atIndex:2];

这样做的方法。当我在IB中创建滑块并将PWSlider类分配给它时,一切正常。

但是,如果我尝试从代码创建我的PWSlider,那么当我执行我的inits(添加我的子视图)时,不存在子视图。

对于代码中的init,我重写initWithFrame,对于NIB案例,我尝试了两个,awakeFromNib和initWithCoder - 结果相同。

使用

进行调试时
NSLog(@"subview count: %d", [self.subviews count]);

结果是从NIB加载我得到3个子视图,以编程方式加载我得到0。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我假设你的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:。