0

我正在创建一个具有退格按钮的计算器应用程序,以防用户不小心输入了一个数字。有没有办法删除发送到 UILabel 的最后一个东西?

当然,我正在添加我的代码以显示我目前在做什么,

- (IBAction)digitPressed:(UIButton *)sender {

    NSString *digit = sender.currentTitle;
    if ([digit isEqualToString:@"."] && !_decimalPressed){
        self.display.text = [self.display.text stringByAppendingString:digit];
        self.historyDisplay.text = [self.display.text stringByAppendingString:digit];
        self.decimalPressed = YES;
    }
    else if (!_isUserInTheMiddleOfEnteringANumber){
        self.display.text = digit;
        self.historyDisplay.text = digit;
        self.isUserInTheMiddleOfEnteringANumber = YES;
    }
    else if (![digit isEqualToString:@"."]){
        self.display.text = [self.display.text stringByAppendingString:digit];
        self.historyDisplay.text = [self.display.text stringByAppendingString:digit];
    }
}

这就是我试图删除最后一个元素的方式

- (IBAction)backSpace:(id)sender {



}
4

3 回答 3

1

只需从标签内设置的字符串中删除最后一个字符。示例代码:

int numChars = myLabel.text.length;
NSString* truncatedString = [myLabel.text substringToIndex:(numChars - 1)];
mLabel.text = truncatedString;
于 2012-07-02T02:32:39.617 回答
0
- (IBAction)backPressed:(id)sender {
    self.display.text=[self.display.text substringToIndex:[self.display.text length] -1];
    if ([self.display.text isEqualToString:@""] || [self.display.text isEqualToString:@"-"]){
        self.display.text = @"0";
        self.userIsInTheMiddleOfEnteringANumber=NO;
    }

}

在代码中添加了一些常见的逻辑。如果您到达最后一个数字并再次退格,它将返回显示文本为 0。由于它是一个计算器,假设您创建了负号 ( +/- ),如果您留下-,您将要删除它并将其也放置为 0。因此,如果一切都归零,您也需要将您的设置userIsInTheMiddleOfEnteringANumber为 NO。

于 2012-07-09T08:18:30.183 回答
0
NSMutableString * stringToModify = [[NSMutableString alloc] initWithString: self.display.text];
if(stringToModify && ([stringToModify length] > 0))
{
    [stringToModify deleteCharactersInRange: NSMakeRange([stringToModify length] - 1, 1)];
    self.display.text = stringToModify;
    [stringToModify release]; // if and only if NOT using ARC
}
于 2012-07-02T02:32:39.513 回答