如何动态更改UISliders、iOS的最大值?

如何动态更改UISliders、iOS的最大值?,ios,objective-c,uislider,Ios,Objective C,Uislider,我有5个滑环。所有5项的总和应为100。现在,它们都默认从20开始。因此,它们一开始不应该超过20,因为它们的总和已经是100。现在,让我们假设我移动UISlider1并将其降到10。这意味着现在所有5个的总和是90,因此我有10个“释放”。所以UISlider2应该可以增加到30。或者再次从UISLIDE2到25和UISLIDE3到25 我的问题是,我该怎么做?如何根据其他UISlider的值动态(以编程方式)更改UISlider的最大值 谢谢 编辑:看答案 这个怎么样 // Where yo

我有5个滑环。所有5项的总和应为100。现在,它们都默认从20开始。因此,它们一开始不应该超过20,因为它们的总和已经是100。现在,让我们假设我移动UISlider1并将其降到10。这意味着现在所有5个的总和是90,因此我有10个“释放”。所以UISlider2应该可以增加到30。或者再次从UISLIDE2到25和UISLIDE3到25

我的问题是,我该怎么做?如何根据其他UISlider的值动态(以编程方式)更改UISlider的最大值

谢谢

编辑:看答案

这个怎么样

// Where you create slider
[slider1 addTarget:self action:@selector(sliderValueChanged:) 
    forControlEvents:UIControlEventValueChanged];
[slider2 addTarget:self action:@selector(sliderValueChanged:) 
    forControlEvents:UIControlEventValueChanged];
// ... etc.

// Somewhere else
-(void)sliderValueChanged:(UISlider *)sender{
    float total = slider1.value + ... + slider5.value;
    float delta = 100 - total;
    slider1.maximumValue = slider1.maximumValue + delta;
    slider2.maximumValue = slider2.maximumValue + delta;
    // ... etc.
}
没有“默认”方法可以做到这一点。您必须自己创建逻辑。但是,我将为您提供三种方法,以便有空间执行该逻辑

 [slider addTarget:self action:@selector(sliderMove:) forControlEvents:UIControlEventValueChanged];
这将使它能够调用您的代码“sliderMove”

在那里,你可能想打个电话给

 self.slider.value = 0.x // representing percentage filled
为要移动的滑块调整滑块值

您可能应该将故事板中的所有滑块存储为@property,以便引用您的值

设置。最大值将使刻度不在0到100之间。有关.value和.maximumValue之间的差异,请参见此处

(解决方案)

感谢所有回复的人,我自己解决了这个问题,我将在这里发布解决方案,以防将来有人需要帮助

(默认设置为100时,使用的百分比总数和百分比。剩余百分比由使用的百分比总数确定。开始时为0。)

滑块的初始化包括以下内容:

slider1.minimumValue = 0.0;
slider1.maximumValue = [appDelegate getSlider1Percent] + [appDelegate   getPercentRemaining];    
然后单击滑块动作: -(iAction)滑块1操作:(iSlider*)发送器 {

nsu整数值=sender.value;
self.slider1Counter.text=[NSString stringWithFormat:@“%d%%”,值];
NSUInteger currentSlider1Percent=[appDelegate getSlider1Percent];
appDelegate.slider1Percent=值;
如果(appDelegate.GetSlider1百分比
我希望这能帮助一些人

干杯

slider1.minimumValue = 0.0;
slider1.maximumValue = [appDelegate getSlider1Percent] + [appDelegate   getPercentRemaining];    
NSUInteger value = sender.value;
self.slider1Counter.text = [NSString stringWithFormat:@"%d%%",value];



NSUInteger currentSlider1Percent = [appDelegate getSlider1Percent];
appDelegate.slider1Percent = value;


if(appDelegate.getSlider1Percent < currentSlider1Percent)
{


    nowFree = currentSlider1Percent - value;
    appDelegate.percentUsed = [appDelegate getPercentUsed] - nowFree;
    appDelegate.percentRemaining = [appDelegate getPercentTotal] - [appDelegate getPercentUsed];

    slider2.maximumValue = [appDelegate getSlider2Percent] + appDelegate.getPercentRemaining;

    slider3.maximumValue = [appDelegate getSlider3Percent] + appDelegate.getPercentRemaining;
    slider4.maximumValue = [appDelegate getSlider4Percent] + appDelegate.getPercentRemaining;
    slider5.maximumValue = [appDelegate getSlider5Percent] + appDelegate.getPercentRemaining;
}
else 
{
    nowFree = value - currentSlider1Percent;
    appDelegate.percentUsed = [appDelegate getPercentUsed] + nowFree;
    appDelegate.percentRemaining = [appDelegate getPercentTotal] - [appDelegate getPercentUsed];



    slider2.maximumValue -= nowFree;
    slider3.maximumValue -= nowFree;
    slider4.maximumValue -= nowFree;
    slider5.maximumValue -= nowFree;
}
}