我正在实施一个简单的计算器。
每次用户点击数字按钮时,sender.tag将附加到名为displayString的nsmutable字符串,然后显示在屏幕上。
可变字符串以40开头。
奇怪的是,在输入10位数后,例如1111111111
,字符串的行为就错误了。
如果您继续点击数字按钮' 1',字符串不会附加' 1'再一次,但另一个值,比如,2或6 ...突然出现像25469632154
这样的数字!
使用调试器检查 - 问题不是来自显示器,而是来自字符串本身没有正确附加。
sender.tag
是否未正确传递?
这里可能出现什么问题?
[displayString appendString: [NSString stringWithFormat: @"%i", [sender tag]]];
self.lblDisplay.text = displayString;
答案 0 :(得分:1)
欢迎来到SO! 您可以尝试记录所有标记以确定问题所在。
NSLog(@"%d", [sender tag])
Tag
属性是NSInteger类型,因此您可以使用%d
修饰符而不是%i
。
您也可以使用appendFormat
方法:
[displayString appendFormat:@"%d",[sender tag]];
self.lblDisplay.text = displayString;
答案 1 :(得分:1)
您为什么使用NSMutableString
?为什么不这样做:
self.lblDisplay.text = [self.lblDisplay.text stringByAppendingFormat:@"%d", [sender tag]];
无论如何,你是如何设置标签的?请发布该代码。我的猜测是那里出现了问题,而不是传递标签或附加值。