为UISlider使用字符串数组

时间:2013-01-11 20:34:32

标签: iphone ios cocoa-touch

我想用基于数组的字符串更改UILabel。以下是我到目前为止的情况:

- (IBAction) sliderValueChanged:(UISlider *)sender {
   scanLabel.text = [NSString stringWithFormat:@" %.f", [sender value]];
    NSString *wholeText = @"Very Bad";
    self.scanLabel.text = wholeText;

}

而不仅仅是“非常糟糕”,我希望不同的价值观显示“非常糟糕,糟糕,好,好,非常好”。

我在哪里声明NSMutableArray,以及如何使用滑块实现它?

更新:谢谢大家的帮助! (我喜欢stackoverflow)

4 个答案:

答案 0 :(得分:4)

这不是编译器检查过......但你可能会有所了解。

NSArray *texts=[NSArray arrayWithObjects:@"very Bad", @"Bad", @"Okay", @"Good", @"Very Good",nil];
NSInteger sliderValue=[sender value]; //make the slider value in given range integer one.
self.scanLabel.text=[texts objectAtIndex:sliderValue];

答案 1 :(得分:3)

您在与上述方法相同的类中声明它。

我们说它叫wholeTexts

代码如下所示:

- (IBAction) sliderValueChanged:(UISlider *)sender {
    scanLabel.text = [NSString stringWithFormat:@" %.f", [sender value]];
    NSString *wholeText = [wholeTexts objectAtIndex:(wholeTexts.count - 1) * (int)(sender.value - sender.minimumValue)/(sender.maximumValue - sender.minimumValue)];
    self.scanLabel.text = wholeText;
}

答案 2 :(得分:1)

只要在需要使用滑块之前创建阵列,就可以在任何地方实现阵列。 iOS中的滑块只能有0到1之间的值,因此您需要将该值乘以某个值以获得与数组中项目数量一样高的数字(减1),并且您需要将它们转换为到整数,所以你可以使用该值作为数组的索引。像这样:

- (IBAction) sliderValueChanged:(UISlider *)sender {
   scanLabel.text = [myArray objectAtIndex:(int)(sender.value * 10)];

}

答案 3 :(得分:1)

将文本值放入数组

NSArray* array =  @[@"very Bad", @"Bad", @"Okay", @"Good", @"Very Good"];
  • 将滑块设置为最小值为0,最大值为4
  • 将您的[sender value]变为int,例如floor([sender value])

使用你的int从数组中选择一个项目,例如

NSString* result = [array objectAtIndex:myInt];