0

Xcode では、現在のテキストに関連してテキストを変更するボタンを作成しようとしています。例:ボタンに「1」と表示されていて、それが押された場合、テキストを「2」に、「2」を「3」などに変更したい場合、問題を引き起こしているコードのスニペットを次に示します。

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

Xcode は、スニペットの 1 行目にこのエラー「読み取り専用プロパティへの割り当て」を表示します。私は Objective-C と iPhone アプリの開発にかなり慣れていないので、非常に明白で単純なものかもしれません。その場合は気にしないでください。

これが私の実装ファイルの貼り付けです

前もって感謝します。

4

2 に答える 2

5

「=」は代入用で、「==」は比較用です。ただし、文字列比較の場合はisEqualToStringメソッドを使用する必要があります。このようなもの:

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

PS。UILabeltextプロパティを取得する必要があることにも注意してください

于 2012-07-08T20:04:08.870 に答える
0

ボタンのテキストを制限なしで変更したい場合は、100万の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 に答える