UISlider代码不会覆盖IB默认值

时间:2012-08-23 12:16:29

标签: iphone objective-c ios ipad uislider

[heightSlider addTarget:self action:@selector(updateHeightLabel :) forControlEvents:UIControlEventValueChanged];我在heightSlider文件中声明了.h,如下所示: @property (retain, nonatomic) UISlider *heightSlider;@synthesize heightSlider;.m文件中。

IB中,我将其与updateHeightLabel上的valueChanged联系起来。我还在maximumValue中将默认minimumValue36.0设置为84.0IB

unitType的默认值为0。因此,heightSlider.maximumValue应相应地进行设置,从而NSLog91.0更改为213.0,但事实并非如此。它NSLogs来自IB默认值的更改。

同样[heightSlider addTarget:self action:@selector(updateHeightLabel:)forControlEvents:UIControlEventValueChanged];似乎也没有工作,并且由于IB中的连接而仅调用该函数。

我有什么基本的错误吗?

- (void)viewDidLoad
  {
      [super viewDidLoad];

      heightSlider = [[UISlider alloc] init];
      heightSlider.userInteractionEnabled = TRUE;
      heightSlider.continuous = YES;
      [heightSlider addTarget:self action:@selector(updateHeightLabel:)forControlEvents:UIControlEventValueChanged]; 

      if (unitType == 0) {
            heightSlider.maximumValue = 91.0;
            heightSlider.minimumValue = 213.0;      
}

      else if (unitType ==1 ) {

            heightSlider.maximumValue = 36.0;
            heightSlider.minimumValue = 84.0;
}

}


-(IBAction) updateHeightLabel:(id)sender {

   NSLog(@"Sender Value : %f", sender.value");

}

1 个答案:

答案 0 :(得分:4)

如果你在IB中创建了滑块,并将它连接到你的heightSlider属性,那么你不应该使用alloc / init来创建一个新的。您正在有效地创建一个不可见的滑块(因为您不将其添加为子视图),并更改其属性。

注释掉alloc / init代码行......