gpt4 book ai didi

objective-c - 为计算器制作一个退格按钮

转载 作者:行者123 更新时间:2023-12-01 19:15:38 24 4
gpt4 key购买 nike

我正在制作一个iOS计算器,但我在使用Backspace按钮时遇到了一些小麻烦(用于删除标签上显示的值的最后一个数字)。

为了获得标签上的当前值,我使用了

    double currentValue = [screenLabel.text doubleValue]

在其他问题之后,我尝试了类似的方法
-(IBAction)backspacePressed:(id)sender
{
NSMutableString *string = (NSMutableString*)[screenLabel.text];

int length = [string length];

NSString *temp = [string substringToIndex:length-1]
;

[screenLabel.text setText:[NSString stringWithFormat:@"%@",temp]];

}

但这行不通

(Xcode说“ setText已弃用”,“ NSString可能不响应setText ”,并且在IBAction内部的第一行代码中,期望 标识符是)

而且我并不真正理解此代码以使其自己工作。

我该怎么办?

最佳答案

它应该是

[screenLabel setText:[NSString stringWithFormat:@"%@",temp]];

您的Xcode清楚地表明您正在尝试调用 setText' method on an NSString where as you should be calling that on a UILabel . Your screenLabel.text is retuning an NSString . You should just use screenLabel alone and should call setText`。

随便用
NSString *string = [screenLabel text];

问题在于,您使用的 [screenLabel.text];根据Objective-C语法不正确,无法在 text上调用 screenLabel方法。您应该使用
NSString *string = [screenLabel text];

要么
NSString *string = screenLabel.text;

在这种方法中,我认为您不需要使用 NSMutableString。您可以只使用 NSString代替。

简而言之,您的方法可以写成:
-(IBAction)backspacePressed:(id)sender
{
NSString *string = [screenLabel text];
int length = [string length];
NSString *temp = [string substringToIndex:length-1];
[screenLabel setText:temp];
}

根据您在注释中提出的问题(现已删除),如果您希望在不存在任何字符串时显示零,请尝试,
-(IBAction)backspacePressed:(id)sender
{
NSString *string = [screenLabel text];
int length = [string length];
NSString *temp = [string substringToIndex:length-1];

if ([temp length] == 0) {
temp = @"0";
}
[screenLabel setText:temp];
}

关于objective-c - 为计算器制作一个退格按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13570657/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com