Objective c 目标-C-如果语句

Objective c 目标-C-如果语句,objective-c,if-statement,Objective C,If Statement,Quick qeustion,我的代码: if (slider2.value == 1) { barHeight = 100; } else if (slider2.value == 2) { barHeight = 200; } else if (slider2.value == 3) { barHeight = 300; } else if (slider2.value == 4) { barHeight = 400; } else if (slide

Quick qeustion,我的代码:

if (slider2.value == 1) 
{
    barHeight = 100;
}
else if (slider2.value == 2) 
{
    barHeight = 200;
}
else if (slider2.value == 3) 
{
    barHeight = 300;
}
else if (slider2.value == 4) 
{
    barHeight = 400;
}
else if (slider2.value == 5) 
{
    barHeight = 500;
}
else
{
    barHeight = 600; 
}
当我将滑块从1拖动到6时,我看到条的高度发生了变化。但是当我从6移动到1时,杆的高度被固定在600,并没有返回到100。我错过了什么

编辑(完整语句):


每次更改值时,您都会添加一个新的orangeView。因此,它们只是相互叠加。最高的视图将保留在屏幕上,当您添加相同颜色的较短视图时,您将看不到它们

要解决此问题,可以在valueChanged方法(可能是viewDidLoad)之外设置orangeView属性,并将其添加为子视图。 然后,每当滑块更新时,只更新视图的帧

e、 g

您还应该将其移动到if-else语句之后,否则它将只使用先前的值进行更新

编辑: 正如rmaddy指出的,在本例中,if语句有点过头了。开关的可读性/效率可能更高,但由于barHeight仅为滑块值乘以100,因此更容易写入:

- (void)valueAgeChanged:(UISlider*)slider2
{

barHeight = floorf(slider2.value) * 100;
self.orangeView.frame = CGRectMake(595, barX, 80, barHeight);

}

每次更改值时,您都会添加一个新的orangeView。因此,它们只是相互叠加。最高的视图将保留在屏幕上,当您添加相同颜色的较短视图时,您将看不到它们

要解决此问题,可以在valueChanged方法(可能是viewDidLoad)之外设置orangeView属性,并将其添加为子视图。 然后,每当滑块更新时,只更新视图的帧

e、 g

您还应该将其移动到if-else语句之后,否则它将只使用先前的值进行更新

编辑: 正如rmaddy指出的,在本例中,if语句有点过头了。开关的可读性/效率可能更高,但由于barHeight仅为滑块值乘以100,因此更容易写入:

- (void)valueAgeChanged:(UISlider*)slider2
{

barHeight = floorf(slider2.value) * 100;
self.orangeView.frame = CGRectMake(595, barX, 80, barHeight);

}

你试着用switch-case语句重写这个吗?代码似乎没问题,可能是周围的代码有问题?何时调用此语句?这发生在UISlider valueChange上?你能发布函数的其余部分吗?哦,忘记开关-
barHeight=slider2.value*100@Sulthan滑块的值是浮点值。该代码强制滑块仅具有整数值。尽管除以1.0是毫无意义的。整行代码与
floor(slider2.value)
相同。您是否尝试使用switch-case语句重写此代码?代码似乎没有问题,可能是周围的代码有问题?何时调用此语句?这发生在UISlider valueChange上?你能发布函数的其余部分吗?哦,忘记开关-
barHeight=slider2.value*100@Sulthan滑块的值是浮点值。该代码强制滑块仅具有整数值。尽管除以1.0是毫无意义的。整行代码与
floor(slider2.value)
相同。替换
[slider2设置值:((int)((slider2.value+1)/1.0)-1.0)动画:否]带有
slider2.value=floor(slider2.value)将整个
if-else
块替换为
barHeight=slider2.value*100。是的,我同意这一点,但我想解决的问题是,为什么酒吧似乎没有改变高度。肯定要进行优化。替换
[slider2设置值:((int)((slider2.value+1)/1.0)-1.0)动画:否]带有
slider2.value=floor(slider2.value)将整个
if-else
块替换为
barHeight=slider2.value*100。是的,我同意这一点,但我想解决的问题是,为什么酒吧似乎没有改变高度。肯定会有一些优化。
- (void)valueAgeChanged:(UISlider*)slider2
{

barHeight = floorf(slider2.value) * 100;
self.orangeView.frame = CGRectMake(595, barX, 80, barHeight);

}