我是Objective-c和Xcode的新手。我试图从某些按钮获取大数字,但我得到的只是一个数字。我正在使用按钮标签。
例如:如果我想添加两个数字2 + 3,它运作良好。但是当我想添加230 + 32时,却没有。
界面:
- (IBAction)getnumber:(id)sender;
@property (strong, nonatomic) IBOutlet UILabel *Result;
int number;
实施部分:
-(IBAction)getnumber:(id)sender {
number = [sender tag];
Result.text = [NSString stringWithFormat:@"%i", number];
}
如果我点按了多个按钮,有没有办法从按钮的标签中获取大号?
提前谢谢。
答案 0 :(得分:1)
您的问题来自于您如何定义变量。如果我理解你的设置正确,你有类似计算器界面的东西,你只是将按钮的标签设置为单个数字,如1,2,3,...,以指示下一个要显示的数字?
在这种情况下,你的行number = [sender tag]
会将一个全局变量设置为该按钮的数字(还记得当你的CS教授告诉你永远不要使用全局变量吗?这就是为什么!)因为你刚刚覆盖了number
当您在下一行设置结果字符串时,使用此按钮的标记,number
仅保留按下的最后一个按钮的值。相反,你应该做这样的事情。
@interface MyClass : UIViewController
@property (nonatomic, strong) IBOutlet UITextView * resultLabel;
- (IBAction)getNumber:(id)sender;
@end
和
- (IBAction)getNumber:(id)sender;
{
self.resultLabel.text = [NSString stringWithFormat:@"%@%d", self.resultLabel.text, [sender tag]];
}
通过这种方式,每次调用getNumber:
时,它都会接受标签当前显示的任何文本,并附加此按钮的值。作为旁注,它的常规方法是使用小写字母启动Objective-C属性名称。
答案 1 :(得分:0)
我认为您必须将变量类型附加到number
。它应该是 -
- (IBAction)getnumber:(id)sender
{
NSInteger number = [sender tag];
Result.text = [NSString stringWithFormat:@"%i", number];
}
我
答案 2 :(得分:0)
你需要改变你的逻辑。
number = 0;
如果点击了带数字的按钮
number = number * 10 + button.tag;
其他
如果按下操作(非=)
存储号码和操作员
如果点击了= operatior
对存储的号码和最近输入的号码执行操作。