【问题标题】:UISlider code not overriding IB defaultsUISlider 代码不会覆盖 IB 默认值
【发布时间】:2012-08-23 12:16:29
【问题描述】:

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

IB 中,我将它连接到valueChanged 上的updateHeightLabel。我还将IB 中的默认maximumValueminimumValue 设置为36.084.0

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");

}

【问题讨论】:

  • 你有一个叫updateHeightLabel的方法吗?
  • 感谢@geminiCoder,这只是一个错字。不要在代码中包含它。

标签: iphone objective-c ios ipad uislider


【解决方案1】:

如果您在 IB 中创建了滑块,并将其连接到您的 heightSlider 属性,那么您不应该执行 alloc/init 来创建一个新的。您实际上是在创建一个不可见的滑块(因为您没有将其添加为子视图),并更改其属性。

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

【讨论】:

  • 谢谢@CSmith,我通常不这样做。我把它放进去是因为当我省略它时,值不会更新。 NSLog 固定在91.0 上,heightSlider 将不再滑动,一旦我摆脱它。我尝试在updateHeightLabel 方法中使用[heightSlider setValue:(float)sender.value]; 来设置值。有什么想法吗?
  • 你的最大值应该大于你的最小值,看起来你的最大值/最小值倒退了。
  • 完美。我已经看那个太久了。非常感谢!
猜你喜欢
  • 2011-05-01
  • 2013-10-23
  • 2021-05-19
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多