0

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

如果我点击了多个按钮,有什么方法可以从按钮的标签中获取大量数字?

先感谢您 。

4

3 回答 3

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 属性名称以小写字母开头是惯例。

于 2013-04-22T02:34:28.610 回答
0

我认为您必须将变量类型附加到number. 它应该是 -

- (IBAction)getnumber:(id)sender 
{
    NSInteger number = [sender tag]; 
    Result.text      = [NSString stringWithFormat:@"%i", number]; 
}  

于 2013-04-22T02:00:08.513 回答
0

你需要改变你的逻辑。

数字 = 0;

如果单击带有数字的按钮

number = number * 10 + button.tag;

别的

如果按下操作(不是 =)

存储号码和运算符

if = 运算符被点击

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

于 2013-04-22T04:57:18.563 回答