如何像在堆栈中一样插入数字并像弹出一样删除
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
此处以计算器应用为例。新手必看
我正在使用按钮并将标签 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
此处以计算器应用为例。新手必看