从 Objective-C 中的多个滑块输出平均数字

Posted

技术标签:

【中文标题】从 Objective-C 中的多个滑块输出平均数字【英文标题】:Outputting an average figure from multiple sliders in Objective-C 【发布时间】:2014-07-10 15:07:46 【问题描述】:

我是 Objective-C 的初学者,我想知道如何将来自多个滑块的值数据的平均值输出到标签。

我走了这么远:

.h

@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UISlider *Slider;
- (IBAction)updateValue:(UISlider *)sender;
@property (weak, nonatomic) IBOutlet UILabel *persentage;

@property (weak, nonatomic) IBOutlet UISlider *Slider2;
- (IBAction)updateValue2:(UISlider *)sender;
@property (weak, nonatomic) IBOutlet UILabel *persentage2;

@property (weak, nonatomic) IBOutlet UILabel *averagePercentage;


@end

.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.


- (void)didReceiveMemoryWarning

    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.


- (IBAction)updateValue:(UISlider *)sender 
    _percentage.text = [NSString stringWithFormat:@"%.2f %%",sender.value*100];

- (IBAction)updateValue2:(UISlider *)sender 
    _percentage2.text = [NSString stringWithFormat:@"%.2f %%",sender.value*100];


@end

我想做的是,我想让“averagePercentage”标签显示两个输入的平均百分比。我该怎么办?我也在使用故事板。

【问题讨论】:

【参考方案1】:

向您的视图控制器添加一个方法并从您的 IBActions 调用它:

@interface ViewController ()
- (void)updateAveragePercentage;
- (NSString *)stringForPercentage:(float)value;
@end

@implementation ViewController
...

- (IBAction)updateValue:(UISlider *)sender 
    self.percentage.text = [self stringForPercentage:sender.value];
    [self updateAveragePercentage];

- (IBAction)updateValue2:(UISlider *)sender 
    self.percentage2.text = [self stringForPercentage:sender.value];
    [self updateAveragePercentage];


- (void)updateAveragePercentage

    float average = 0.5f * (self.Slider.value + self.Slider2.value);
    self.averagePercentage.text = [self stringForPercentage:average];


- (NSString *)stringForPercentage:(float)value

    return [NSString stringWithFormat:@"%.2f %%", value * 100];


@end

请注意,我在 .m 文件的类扩展声明中声明了 updateAveragePercentage,因为它没有必要公开可见。

我还添加了一个stringForPercentage 方法,这样stringWithFormat 代码就不会重复。您可能需要考虑使用 NSNumberFormatter 而不是 stringWithFormat 来更好地控制和本地化您的数字格式。

【讨论】:

您可以对两个滑块使用相同的操作方法,并在一种方法中完成所有操作。

以上是关于从 Objective-C 中的多个滑块输出平均数字的主要内容,如果未能解决你的问题,请参考以下文章

根据测试中的类平均值从数组 C# 输出平均值

如何在 Objective-C 中的 UISlider 上添加标记? [关闭]

如何从 tkinter 滑块/刻度重复输出,以便我可以通过串行向另一台设备发送恒定的数字流?

从ValueChangingFcn中访问其他滑块的值

如何利用字典计算数据框中的多个平均值

迭代多个数据帧并执行数学函数保存输出