【问题标题】:adding a simple "$" to a dynamic UILabel向动态 UILabel 添加一个简单的“$”
【发布时间】:2013-05-10 20:50:37
【问题描述】:

如果这是一个基本问题,请原谅我,我正在学习 Objective-C 和 iphone 编程,我想做一个显示平衡的简单 UILabel。有一个 UITextField 和一个提交按钮供用户输入余额。一旦用户点击提交,UILabel 就会显示新的余额。

我的问题: 用户只输入一个数字(例如“500”),但我希望 UILabel 在它前面显示一个默认的美元 ($)。 (例如“$500”)

在我的实现中,我使用了以下代码:

- (IBAction)submitButtonPressed:(id)sender {

    self.balance.text = self.balanceTextField.text;
}

当我尝试添加 NSLog 选项以强制显示为字符串时: self.balanceTextField.text = NSLog(@"$%@", balanceTextField)

Xcode 给我一个错误,我正在尝试从 Void 类型调用字符串类型。

我怎样才能解决这个问题并让那个美元符号自动出现在我的 UILabel 中? 谢谢

【问题讨论】:

    标签: objective-c uilabel


    【解决方案1】:

    NSLog 是一种日志记录方法——它不是一个通用的“像这样格式化字符串”方法。你要找的是+[NSString stringWithFormat:]

    self.balance.text = [NSString stringWithFormat:@"$%@", self.balanceTextField.text];
    

    不过,正如 JB13 指出的那样,您可能希望使用 NSNumberFormatter 为您设置文本格式。

    【讨论】:

    • 这很有帮助,谢谢,我将使用货币 numberFormatter 选项,因为它也给了我 2 位小数!谢谢
    【解决方案2】:

    如何使用帮助方法格式化为货币而不仅仅是 $ 符号

    - (NSString *)currencyFormatFromNumber:(NSNumber*)number
    {
        NSString *output = nil;
        if (number != nil)
        {
            NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
            [formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    
            output = [formatter stringFromNumber:number];
                formatter = nil;
        }
    
        return output;
    }
    

    self.balance.text = [self CurrencyFormatFromNumber:[NSNumber numberWithDouble:[self.balanceTextField.text doubleValue]]];
    

    【讨论】:

    • 使用数字格式化程序的建议是正确的,但是似乎没有任何理由将其作为方法而不是函数(或者只是与 OP 的代码内联。它也不应该以大写字母开头——只有类型名称应该。此外,没有必要将格式化程序设置为nil;无论如何,它都会在方法结束时由 ARC 释放。
    【解决方案3】:

    这两种最常见的方法(稍微修正一下,如果字符串为nil怎么办?)是:

    (1)

      self.balance.text = [NSString stringWithFormat:@"$%@", self.balanceTextField.text?self.balanceTextField.text:@"0"];
    

    (2)

    self.balance.text = [@"$" stringByAppendingString: self.balanceTextField.text?self.balanceTextField.text:@"0"];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-18
      • 2017-01-14
      • 1970-01-01
      • 1970-01-01
      • 2011-05-26
      • 2012-06-24
      • 1970-01-01
      相关资源
      最近更新 更多