2013-05-10 12 views
0

請原諒我,如果這是一個基本問題,我正在學習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中? 謝謝

回答

3

NSLog是一種日誌記錄方法 - 它不是一個通用的「格式這樣的字符串」格式。你在找什麼是+[NSString stringWithFormat:]

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

由於JB13指出,不過,你可能需要使用一個NSNumberFormatter來格式化文本爲您服務。

+0

這是非常有幫助,謝謝,我會雖然,因爲它給了我2位小數也使用貨幣的NumberFormatter選擇!謝謝 – hayden 2013-05-12 20:51:08

0

怎麼樣的helper方法格式化爲貨幣,而不僅僅是$符號

- (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]]]; 
+1

使用數字格式化程序的建議是正確的,但似乎沒有任何理由將它作爲一種方法而不是函數(或者只是與OP的代碼內聯,也不應該以大寫字母開頭 - - 只有類型名稱應該,此外,沒有必要將格式化程序設置爲「nil」;在任何情況下,該程序將在方法結束時通過ARC發佈 – 2013-05-10 21:19:45

+0

哦,這是完美的!!感謝您的幫助! – hayden 2013-05-12 20:50:12

0

這樣(有小幅回調的兩種最常見的方式,是什麼如果字符串爲零?)是:

(1)

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

(2)