如何像在堆栈中一样插入数字并像弹出一样删除

how to insert number like in stack and delete like pop

我正在使用按钮并将标签 0 分配给 10 。然后我做了一个动作来获取点击按钮的标签,现在我想在标签中显示标签。我还有一个取消按钮 C。如果用户想删除任何号码,他可以单击我要从标签中删除号码的 C 按钮。

这是我摸号的截图

- (void)viewDidLoad {
    [super viewDidLoad];

    self.title = @"Ezywire";

    addnum=[[NSMutableArray alloc]init];
    numbber=[[NSString alloc]init];
}

- (IBAction)NumberAction:(id)sender {
    NSInteger tagvalue = [sender tag];
    NSString *current=[NSString stringWithFormat:@"%ld", (long)tagvalue]; 
     [addnum addObject:current];

    NSString *temp;
    for ( int i=0; i<[addnum count]; i++) {

       numbber=[numbber stringByAppendingString:[addnum objectAtIndex:i]];

    }

    NSLog(@"data===%@",numbber);

    ValueLable.text= numbber;

}

但是在标签中我得到了这样的重复数字。如何实现。

例如,如果用户输入 2,则在标签中

2

然后他在标签中输入 7 然后

27 

然后他在标签中输入了 9 然后

279 

....... 像这样。

如果用户点击 C,那么它从标签中删除的最后一个值是(最后一个值已删除)

27

您的代码中的问题是 numbber 在加载视图时被初始化,并且再也不会被清除。但是,每次按下按钮时,整个 addnum 数字会再次附加到 num,从而创建重复数字。

通过删除 num 作为实例变量来解决此问题,使其成为 NumberAction: 方法的局部变量,并在每次按下数字时将其设置为空字符串。

由于您还计划支持清除操作,因此您应该创建一个私有方法,将 addnum 数组中的数字组合成一个字符串。这样您的 NumberAction:ClearAction 将共享格式化数组和设置标签的代码。您的 NumberAction: 方法将附加一个数字并调用 FormatAndSetLabel,而 ClearAction 方法将删除最后一位数字(如果可用),并同时调用 FormatAndSetLabel

- (IBAction)NumberAction:(id)sender {
    NSInteger tagvalue = [sender tag];
    NSString *current=[NSString stringWithFormat:@"%ld", (long)tagvalue]; 
    [addnum addObject:current];
    [self FormatAndSetLabel];
}

- (IBAction)ClearAction:(id)sender {
    if (!addnum.count) return;
    [addnum removeLastObject];
    [self FormatAndSetLabel];
}


-(void)FormatAndSetLabel {
    NSMutableString *temp = [NSMutableString string];
    for ( int i=0; i<[addnum count]; i++) {
        [temp appendString:addnum[i]];
    }
    ValueLable.text= temp;
}

您也可能对看一看 Paul 的 Hegarty Stanford iOS 开发课程(iPad 和 iPhone 应用程序开发,2011 年秋季)

感兴趣

https://itunes.apple.com/ru/itunes-u/ipad-iphone-application-development/id473757255?mt=10

此处以计算器应用为例。新手必看