0

ビューコントローラーにキャンセルボタンがあるiPadアプリを書いています。コントローラでの作業が終了すると、labelText が「Cancel」から「Done」に変わります。したがって、labelTitle がまだ「キャンセル」の場合にのみアラートを表示したいと考えています。「完了」の場合は、コントローラーを閉じてください。コードは次のとおりです。

NSLog(@"%@",closeButton.titleLabel.text);

if (closeButton.titleLabel.text = @"Cancel")
{
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"i-observe"
message:@"Are you sure that you want to cancel?" delegate:self cancelButtonTitle:@"no" otherButtonTitles:@"yes", nil];
[alert show];
} 
else
{
  [self dismissViewControllerAnimated:YES completion:nil];  
}

何が起こるかというと、両方の場合 (「キャンセル」と「完了」) でアラートが表示されます。ただし、NSLog では、titleLabel が変更されたことを示しています。何か案は?

4

2 に答える 2

1

まず、if ステートメント内でテキストを「キャンセル」に設定しています。そのため、if ステートメントのロジックは、「タイトル テキストが正常に 'キャンセル' に設定された場合、アラートを表示する」と言います。比較演算子は==ではなく=です。

==次に、2 つの異なるテキスト オブジェクトを演算子で比較したくありません。あなたはisEqualToString:このように使いたい:

if ([closeButton.titleLabel.text isEqualToString:@"Cancel"]) { ... }
于 2013-01-23T23:24:03.407 に答える
0

「==」を使用して文字列を比較することはできません。次のように isEqualToString を使用します。

if ([closeButton.titleLabel.text isEqualToString:@"Cancel"])
于 2013-01-23T23:23:30.493 に答える