如何在多UIPICKERVIEW中配置“DidSelectRow”?

时间:2012-06-02 05:29:32

标签: objective-c xcode ios5 uipickerview uipickerviewcontroller

好的,伙计们这里是我的问题,我正在为带有uipickerview的电子学生做一个Resistor计算器,但我不知道如何配置“DidSelectRow”的方法。

这个电阻计算器的想法是当用户选择其电阻的颜色(行)时,uipickerview使操作对应于颜色并将结果抛出到UILABEL中。

为了计算电阻值,将颜色1的线与颜色2的值的值一起乘以颜色3的值,就像那样。

This is the image of the values to calculate the resistor value

我不知道如何为行分配值,然后将它们连接起来然后相乘并最终输入UILABEL。

有人帮帮我!我会把我的应用程序的积分! Pleasee:D

这是我的.h

#import <UIKit/UIKit.h>

@interface Resistenciacalc : UIViewController
<UIPickerViewDelegate,UIPickerViewDataSource>


@property (strong, nonatomic) IBOutlet UIPickerView *ColorPicker;

@property (strong, nonatomic) NSArray*ColorData;

这是我的.m

#import "Resistenciacalc.h"

@interface Resistenciacalc ()

@end

@implementation Resistenciacalc
@synthesize ColorData = _ColorData;
@synthesize ColorPicker;

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    _ColorData = [[NSArray alloc] initWithObjects:@"Negro",@"Marron",@"Rojo",@"Naranja",@"Amarillo",@"Verde",@"Azul",@"Violeta", nil];
}

#pragma mark - UIPickerview Methods

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView{
    return 4;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component{
    return _ColorData.count;
}

- (NSString *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component{
    return [_ColorData objectAtIndex:row];
}

/*- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component{



}

1 个答案:

答案 0 :(得分:1)

如果你把这一行:NSLog(@“Row is:%d Component is:%d”,row,component);在pickerView:didSelectRow:inComponent方法中,您将看到它为您提供了行和组件(列)。行号将为您提供该颜色的值,因为,例如,“Negro”在第0行,黑色在电阻颜色方案中表示0。列号将告诉您使用什么值作为乘数来获取电阻值。这样的事情应该接近你所需要的。我已经在控制器.h文件中声明了属性,firstDigit和secondDigit(作为int)和乘数(作为double)。我添加了一个按钮,用户在选择颜色后进行计算:

- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component {

    switch (component) {
        case 0:
            self.firstDigit = row ;
            break;
        case 1:
            self.secondDigit = row ;
            break;
        case 2:
            self.multiplier = pow(10,row);
            break;

        default:
            break;
    }
}


-(IBAction)calculateValue:(id)sender {
    int value = (self.firstDigit *10 + self.secondDigit)* multiplier;
    NSLog(@"%d Ohms",value);
}