我正在编程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的值? –