0

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

[self insertSubview:_label1 atIndex:2];

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

但是,如果我尝试从代码创建我的 PWSlider,当我执行我的初始化(添加我的子视图)时,没有子视图存在。

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

当我调试时

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

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

有任何想法吗?

4

1 回答 1

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:。

于 2011-04-01T17:48:16.643 回答