0

我正在实现一个简单的计算器。

每次用户单击数字按钮时,sender.tag 都会附加到一个名为 displayString 的 nsmutable 字符串,然后会显示在屏幕上。

可变字符串以大小 40 开始。

奇怪的是,例如1111111111,在输入 10 位数字后,字符串的行为错误。

如果你继续点击数字按钮“1”,字符串不再附加“1”,而是另一个值,比如,2或6……突然25469632154出现一个数字!

使用调试器检查 - 问题不是来自显示,而是来自未正确附加的字符串本身。

可能sender.tag是没有正确通过吗?

这里有什么问题?

[displayString appendString: [NSString stringWithFormat: @"%i", [sender tag]]];  
self.lblDisplay.text = displayString;
4

2 回答 2

1

你为什么用NSMutableString?为什么不这样做:

self.lblDisplay.text = [self.lblDisplay.text stringByAppendingFormat:@"%d", [sender tag]];

无论如何,你是如何设置标签的?请发布该代码。我的猜测是那里出了问题,而不是传递标签或附加值。

于 2012-08-26T22:36:51.007 回答
1

欢迎来到 SO!您可以尝试记录所有标签以确定问题所在。

NSLog(@"%d", [sender tag])

Tagproperty 是 NSInteger 类型,所以你可以使用%d修饰符代替%i. 您也可以使用appendFormat方法:

[displayString appendFormat:@"%d",[sender tag]];
self.lblDisplay.text = displayString;
于 2012-08-26T10:03:07.247 回答