从UI按钮读取数字

时间:2013-04-22 01:48:49

标签: ios objective-c xcode uibutton

我是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]; 
}  

如果我点按了多个按钮,有没有办法从按钮的标签中获取大号?

提前谢谢。

3 个答案:

答案 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

对存储的号码和最近输入的号码执行操作。