向小费计算器添加“$”的问题

时间:2011-04-16 23:16:34

标签: iphone objective-c cocoa-touch

我正在尝试在我的应用中为小费结果添加“$”,但我遇到了一些困难。我在Xcode和Objective-C旁边,我不确定我需要在哪里放置符号而导致错误。下面是我的.m代码的副本。

非常感谢任何帮助

#import "tipcalcViewController.h"

@implementation tipcalcViewController


- (void)dealloc
{

    [super dealloc];
}
- (IBAction)aSliderChanged:(id)sender {
    UISlider *slider = (UISlider *)sender;
    if (slider == tipslide) {
        NSString *tip = [NSString stringWithFormat:@"%.2f", slider.value * 100];
        int tipPercentage = [tip intValue];
        NSString *multiplier;
        if (tipPercentage < 10) {
            multiplier = [NSString stringWithFormat:@"1.0%i", tipPercentage];
        }
        else if (tipPercentage >= 10) {
            multiplier = [NSString stringWithFormat:@"1.%i", tipPercentage];
        }
        [costWithTipLabel setText:[NSString stringWithFormat:@"%.2f", ([[costWithoutTip text] intValue] * [multiplier floatValue])]];
        [tipTextLabel setText:[[NSString stringWithFormat:@"Tip(%i", tipPercentage] stringByAppendingString:@"%):"]];
        [self performSelector:@selector(updateNumOfPeop)];
    }
    else if (slider == peopleslide) {
        NSString *p = [NSString stringWithFormat:@"%.f", slider.value*10];   
        int numberOfPeople = [p intValue];
        [numberOfPeopleTextLabel setText:[NSString stringWithFormat:@"Each(%i):", numberOfPeople]];
        [numberOfPeopleLabel setText:[NSString stringWithFormat:@"%.2f", [[costWithTipLabel text] floatValue]/numberOfPeople]];
    }
    [totalBillCost setText:[costWithTipLabel text]];
}
- (void)updateNumOfPeop {
    NSString *p = [NSString stringWithFormat:@"%.f", peopleslide.value*10];   
    int numberOfPeople = [p intValue];
    [numberOfPeopleTextLabel setText:[NSString stringWithFormat:@"Each(%i):", numberOfPeople]];
    [numberOfPeopleLabel setText:[NSString stringWithFormat:@"%.2f", [[costWithTipLabel text] floatValue]/numberOfPeople]];
}
/*
- (IBAction)aSliderChanged:(id)sender {
    UISlider *slider = (UISlider *)sender;
    if (slider == tipslide) {
        NSString *tip = [NSString stringWithFormat:@"%.f", slider.value * 100];
        float tipPercentage = [tip floatValue];
        NSString *multiplier = [NSString stringWithFormat:@"1.%.f", tipPercentage];
        [costWithTipLabel setText:[NSString stringWithFormat:@"%.2f", [[costWithoutTip text] floatValue] * [multiplier floatValue]]];
        [tipTextLabel setText:[[NSString stringWithFormat:@"Tip (%.f", slider.value *100]stringByAppendingString:@"%):"]];
    }
    else if (slider == peopleslide) {
        NSString *p = [NSString stringWithFormat:@"%.f", slider.value*10];
        float numOfPeople = [p floatValue];
        [numberOfPeopleTextLabel setText:[NSString stringWithFormat:@"Each (%.f):", numOfPeople]];
        [numberOfPeopleLabel setText:[NSString stringWithFormat:@"%.2f", [[costWithTipLabel text] floatValue]/numOfPeople]];
    }
    [totalBillCost setText:[NSString stringWithFormat:@"%.2f", [[costWithTipLabel text] floatValue]]];
}
*/
- (void)viewDidLoad {
    [costWithoutTip becomeFirstResponder];
    [costWithoutTip setDelegate:self];
    [costWithoutTip setKeyboardType:UIKeyboardTypeNumbersAndPunctuation];
    [tipslide setValue:0.01];
    [peopleslide setValue:0.1];
    [super viewDidLoad];
}
- (void)textFieldDidEndEditing:(UITextField *)textField {
    [costWithoutTip setText:[NSString stringWithFormat:@"%.2f", [costWithoutTip text].floatValue]];
    [costWithoutTip resignFirstResponder];
}
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [costWithoutTip resignFirstResponder];
    return YES;
}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField {
    [costWithoutTip resignFirstResponder];
    return YES;
}
- (void)didReceiveMemoryWarning
{
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];

    // Release any cached data, images, etc that aren't in use.
}

#pragma mark - View lifecycle

/*
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad
{
    [super viewDidLoad];
}
*/

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

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    // Return YES for supported orientations
    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

@end

1 个答案:

答案 0 :(得分:1)

如果您尝试格式化货币,请使用NSNumberFormatter。

NSNumber *someMoney = [NSNumber numberWithFloat:5.95];

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

NSString *formattedAsDollars = [currencyFormatter stringFromNumber:someMoney];
[currencyFormatter release];

如果你有勇气,你甚至可以冒险进入NSDecimalNumber世界。