0

在 Xcode 中,我试图制作一个按钮来更改它的文本,相对于当前的文本。例如:如果按钮说“1”并且按下它,我希望文本更改为“2”,“2”更改为“3”等等,这是给我带来麻烦的代码片段:

if (magicButton.titleLabel = @"1") {
    [magicButton setTitle:@"2" forState:UIControlStateNormal];
}

Xcode 在代码段的第一行给了我这个错误“Assignment to readonly property”。我对 Objective-C 和 iPhone 应用程序开发还很陌生,所以也许这是非常明显和简单的事情。如果是这样,请不要介意。

这是我的实现文件的粘贴,如果它有帮助的话。

提前致谢。

4

2 回答 2

5

'=' 用于赋值,而 '==' 用于比较。但是在字符串比较的情况下,您应该使用isEqualToString方法。像这样的东西:

if ([magicButton.titleLabel.text isEqualToString: @"1"]) {    
  [magicButton setTitle:@"2" forState:UIControlStateNormal];
}

PS。另请注意,您应该获得UILabel'text属性

于 2012-07-08T20:04:08.870 回答
0

如果您想在没有限制的情况下更改按钮文本,那么您不能做出一百万个 if 语句。您应该获得按钮标题的值(如果它甚至有标题),只需向其添加 1,如下所示:

NSString *string = randomButton.titleLabel.text;

    if ([randomButton.titleLabel.text length] == 0) { //Check if there is not a title on the button

     [randomButton setTitle:@"1" forState:UIControlStateNormal]; //And if there isn't, set it to "1"

    }

    else {

        int yourInt = [string intValue]; //Convert to int

        int nextInt = yourInt + 1; //Add one to value

        NSString *finalString = [NSString stringWithFormat:@"%d",nextInt]; //Convert back to string

        [randomButton setTitle:finalString forState:UIControlStateNormal]; //Finally set it as the title

    }
于 2012-07-08T23:45:44.183 回答