我正在編程Objective-C 2.0書中的一個小數計算器應用程序。我爲Lion使用XCode 4.1。我完全成功地在代碼中沒有輸入任何錯誤。但是當我在應用程序運行時按下數字按鈕時,標籤不會輸入任何文本。當我按一個數字鍵,就應該找到的UIButton發件人標籤(我已撥出)將NSMutableString分配給UILabel文本
-(IBAction)clickDigit:(UIButton *)sender {
int digit = sender.tag;
[self processDigit:digit];
}
,它被髮送到這個代碼:
-(void)processDigit:(int)digit {
currentNumber = currentNumber * 10 + digit;
[displayString appendString:[NSString stringWithFormat:@"%i", digit]];
display.text = displayString;
NSLog(@"Processed");
}
控制檯可以打印處理。這表明該按鈕是否正常工作,所以問題就出在這行代碼:
[displayString appendString:[NSString stringWithFormat:@"%i", digit]];
display.text = displayString;
顯示器是一個UILabel,它是一個實例變量,但它不是一個IBOutlet,但被聲明爲一個IBOutlet在其屬性。
@property (nonatomic, retain)IBOutlet UILabel *display;
我已經使用連接到代碼助理的東西連接.xib屏幕上的標籤。我可以從字面上將它連接到聲明。所以我把它連接到了財產。
現在,問題在於display是UILabel,它的text屬性需要NSString而不是NSMutableString嗎?但是一個NSString不能附加一個字符串和我需要爲這個應用程序執行的其他許多方法。我該如何做這項工作?
DisplayString是否已初始化?如果它是零,那麼appendString選擇器將不會執行任何操作。 – Circumflex
嘗試[NSString stringWithFormat:@「%@」,mutableString]將可變字符串轉換爲靜態字符串。不知道這是否是你的問題。 –
NSMutableString是NSString的一個子類,因此將標籤的文本屬性設置爲該可變字符串是完全有效的。在附加數字以確保設置爲預期值後,是否記錄了displayString的值? –