Tip Calculator
Video Description
Here are the code for the application that is described in this video with bunch of comments.
#import "ViewController.h"
@interface ViewController ()
{
int tipPercentage;
}
@property (weak, nonatomic) IBOutlet UITextField *totalField;
@property (weak, nonatomic) IBOutlet UILabel *tipPercentageLabel;
@property (weak, nonatomic) IBOutlet UISlider *tipPercentageSlider;
@property (weak, nonatomic) IBOutlet UILabel *resultLabel;
@property (weak, nonatomic) IBOutlet UILabel *tipAmountLabel;
@end
@implementation ViewController
- (IBAction)calculatePressed {
[self updateResult];
}
- (IBAction)tipPercentageChanged {
self.tipPercentageLabel.text = [NSString stringWithFormat:@"Tip Percentage %d%%", tipPercentage];
[self updateResult];
}
- (void)updateResult
{
//Get the value of the slider
tipPercentage = self.tipPercentageSlider.value;
//Convert the totalField text filed into the float value and assign it to a float local variable
float billAmount = [self.totalField.text floatValue];
//Calculate the tip amount
float tipAmount = tipPercentage * billAmount / 100;
//Calculate the total bill amount
float totalBill = billAmount + tipAmount;
//Wrap the totalBill with NSNumber in order to get the string value of float variable
NSNumber *totalBillWrapper = [NSNumber numberWithFloat:totalBill];
//Wrap the tipAmount with NSNumber in order to get the string value of float variable
NSNumber *tipAmountWrapper = [NSNumber numberWithFloat:tipAmount];
//Set the value of labels
self.tipAmountLabel.text = [NSString stringWithFormat:@"Tip amount: %@",[tipAmountWrapper stringValue]];
self.resultLabel.text = [NSString stringWithFormat:@"Total: %@",[totalBillWrapper stringValue]];
}
@end
Hi,
ReplyDeleteWhy should we use self here?
tipPercentage = self.tipPercentageSlider.value;
I am a beginner. Please explain as i am able to execute the program without self also?
Hello,
DeleteIn objective C in order to use properties or call a function inside of a class you need to add self at the beginning. It's weird that it works without self. Maybe in new version they don't force user to put self. I have to double check.