Как кодировать вычисления в Xcode, используя 2-компонентные поля выбора и ввода текста

Я пытаюсь закодировать экран iPhone / iPad, который выводит значение в зависимости от того, что введено в текстовое поле и что выбрано в двухкомпонентном средстве выбора. Я сделал основы, вплоть до момента появления введенных / выбранных данных, но без выполнения расчета. Я искал все ресурсы, которые смог найти, и использовал весь соответствующий код, который я нашел, как вы увидите ниже.

В частности, я хочу, чтобы пользователь мог ввести сумму в долларах в одном текстовом поле, выбрать частоту выплат (почасовую, ежемесячную и т. Д.), Выбрать частоту выплат, в которую он хотел бы конвертировать, и просмотреть результаты в другое текстовое поле, когда они нажимают кнопку. Другая кнопка очистит поля, чтобы они могли конвертировать другую сумму. Более конкретно, если они хотели бы видеть, какова их еженедельная заработная плата в размере 310 долларов США, они вводили бы «310»; в первом поле выберите «Еженедельно» в первом компоненте выбора выберите «SemiMonthly» в другом компоненте и нажмите кнопку «Рассчитать». Тогда в другом поле будет показано 671,67 доллара (310 * 52/24 = 671,67).

На всякий случай, когда это происходит, View Controller привязан к Navigation Controller как один из 5 экранов, прикрепленных к одному из 6 экранов, прикрепленных к основному View Controller (для доступа к этому экрану требуется пара нажатий) ,

До сих пор я мог вводить числа в два текстовых поля и вращать 2 компонента выбора и отображать их выборки в метках, но это то, где я застрял. Я не могу найти примеров того, как это реализовать.

Вот мой код ViewController.h:

    @interface PayFrequencyViewController : UIViewController
<UIPickerViewDelegate, UIPickerViewDataSource>
{
    UIPickerView *payPicker;
    NSArray *fromArray;
    NSArray *toArray;
    NSArray *fromValues;
    NSArray *toValues;
    UILabel *resultText;
    UITextField *inputText;
}
@property (strong, nonatomic) IBOutlet UIPickerView *payPicker;
@property (strong, nonatomic) NSArray *fromArray;
@property (strong, nonatomic) NSArray *toArray;
@property (strong, nonatomic) NSArray *fromValues;
@property (strong, nonatomic) NSArray *toValues;
@property (strong, nonatomic) IBOutlet UILabel *resultText;
@property (strong, nonatomic) IBOutlet UITextField *inputText;
- (IBAction)Convert:(id)sender;
- (IBAction)Clear:(id)sender;
@end

А вот мой код ViewController.m:

    @interface PayFrequencyViewController ()

@end

@implementation PayFrequencyViewController
@synthesize payPicker;
@synthesize toArray;
@synthesize fromArray;
@synthesize toValues;
@synthesize fromValues;
@synthesize resultText;
@synthesize inputText;

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    self.fromArray = [[NSArray alloc] initWithObjects:
                      @"Annual", @"Monthly", @"48/Year", @"SemiMonthly", @"BiWeekly", @"Weekly", @"Hourly", nil];

    self.fromValues = [[NSArray alloc] initWithObjects: 
                       [NSNumber numberWithFloat:1.0],
                       [NSNumber numberWithFloat:12.0], 
                       [NSNumber numberWithFloat:48.0],
                       [NSNumber numberWithFloat:24.0], 
                       [NSNumber numberWithFloat:26.0],
                       [NSNumber numberWithFloat:52.0], 
                       [NSNumber numberWithFloat:2080.0], nil];


    self.toArray = [[NSArray alloc] initWithObjects:
                      @"Annual", @"Monthly", @"48/Year", @"SemiMonthly", @"BiWeekly", @"Weekly", @"Hourly", nil];

    self.toValues = [[NSArray alloc] initWithObjects: 
                     [NSNumber numberWithFloat:1.0],
                     [NSNumber numberWithFloat:12.0], 
                     [NSNumber numberWithFloat:48.0],
                     [NSNumber numberWithFloat:24.0], 
                     [NSNumber numberWithFloat:26.0],
                     [NSNumber numberWithFloat:52.0], 
                     [NSNumber numberWithFloat:2080.0], nil];


    [super viewDidLoad];
    inputText.keyboardType = UIKeyboardTypeDecimalPad;
    // Do any additional setup after loading the view.
}

- (void)viewDidUnload
{
    [super viewDidUnload];
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
    self.toArray = nil;
    self.fromArray = nil;
    self.resultText = nil;
    self.inputText = nil;
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}

- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {

    return 2;
}

- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {

    if (component == 0) {
        return [fromArray count];
    }
    return [toArray count];
}

- (NSString *)pickerView:(UIPickerView *)pickerView
             titleForRow:(NSInteger)row
            forComponent:(NSInteger)component
{
    if (component == 0) {
        return [fromArray objectAtIndex:row];
    }
    return [toArray objectAtIndex:row];
} 

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

//- (IBAction)Convert:(id)sender {

//    float valuein = [[fromValues text] floatValue];
//    float valueout = [[toValues text] floatValue];
//    [resultText setText:[NSString stringWithFormat:@"%6.2f", result]];
//    [inputText resignFirstResponder];

    float valuein = [[fromValues objectAtIndex:row] floatValue];
    float valueout = [[toValues objectAtIndex:row] floatValue];
    float input = [inputText.text floatValue];
    float result = input * valuein / valueout;
    NSString *resultString = [[NSString alloc] initWithFormat: @"$ %@", [toArray objectAtIndex:row]];
}

- (IBAction)Clear:(id)sender {
    inputText.text = @"";
    resultText.text = @"";
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
    [inputText resignFirstResponder];
}

@end

Мои извинения за длинный пост и неправильно отформатированный код. Я надеюсь, что кто-то может сказать мне, какой код не нужен и что требуется для выполнения этой задачи.

Ответы на вопрос(0)

Ваш ответ на вопрос