Search code examples
xcodefloating-pointibaction

IBAction float, have a equal different numbers depending on input


New to objective-c and I just can't find the answer to this question anywhere. I'm running a IBAction for a calculation but I need the input from a label to actually equal something else in the equation.

For example:

-(IBAction)calculate; {
  float a = 1.05 if ([label1.text] == 1in);
        a = 2.07 if ([label1.text] == 2in);
        a = 3.07 if ([label1.text] == 3in);
  float b = a*([textField1.text floatValue]);
        label2.text = [[NSString alloc] initWithFormat:@"%2.f", b];
  }

I know I'm not even close to getting it right but I hope you get the idea as to what I'm looking for.

Thank you!


Solution

  • - (void)calculate {
      float a;
      if ([self.inputField.text isEqualToString:@"1in"])      a = 1.05f;
      else if ([self.inputField.text isEqualToString:@"2in"]) a = 2.07f;
      else if ([self.inputField.text isEqualToString:@"3in"]) a = 3.07f;
      else a = 0.0f;
    
      if (a) {
        float b = a * ([self.inputField.text floatValue]);
        self.inputField.text = [[NSString alloc] initWithFormat:@"%.2f", b];
      }
      else self.inputField.text = @"Invalid";
    }
    
    - (void)viewDidLoad
    {
      //...
    
      self.inputField = [[UITextField alloc] initWithFrame:CGRectMake(10.0f, 20.0f, 300.0f, 30.0f)];
      [self.inputField setBackgroundColor:[UIColor grayColor]];
      [self.view addSubview:self.inputField];
    
      UIButton * doneButton = [[UIButton alloc] initWithFrame:CGRectMake(10.0f, 55.0f, 300.0f, 30.0f)];
      [doneButton setBackgroundColor:[UIColor blackColor]];
      [doneButton setTitle:@"Done" forState:UIControlStateNormal];
      [doneButton addTarget:self action:@selector(calculate) forControlEvents:UIControlEventTouchUpInside];
      [self.view addSubview:doneButton];
      [doneButton release];
    }
    

    Note: I replaced the output format %2.f to %.2f, cause I guess you may need this format. E.g:

    Input > 1in
    Output< 1.05
    
    Input > 2in
    Output< 4.14
    
    Input > 3in
    Output< 9.21