1

私は客観的 C を学んでいて、簡単な電卓を作ることから始めました。それでもいくつかの壁にぶち当たりました。2 つのディスプレイがあり、現在入力されている番号と、これまでに入力されたすべてを表示する小さなディスプレイがあります。「クリア」ボタンもあります。

ユーザーが「クリア」ボタンを1回押すと、メインディスプレイがクリアされ、タイトルが「AC」(すべてクリア)に変更されるようにしたい。もう一度ヒットした場合は、これまでに入力したすべての小さな表示をクリアしたいと思います。

それはすべて正常に機能しますが、ユーザーが別の番号を入力し始めたときにボタンを「クリア」に戻したいため、問題が発生しています。

@property (非アトミック) BOOL userIsInTheMiddleOfEnteringANumber; があります。およびそのプロパティの @synthesize 。

userIsInTheMiddleOfEnteringANumber == YES の場合はいつでも、変更する必要があるクリア ボタン (または @property (非アトミック) BOOL allClear) を設定できるようにするにはどうすればよいですか?

4

2 に答える 2

0

メソッドviewdidloadで、ボタンのタイトルの名前を明確に追加します

- (void)viewDidLoad{
[super viewDidLoad];
[myButton setTitle:@"Clear" forState:UIControlStateNormal];
}

すべてをクリアするメソッドでは、ボタンのタイトルをACにします

- (void)clearAllAndACMethod{
if(userIsInTheMiddleOfEnteringANumber==Yes)
{
[myButton setTitle:@"AC" forState:UIControlStateNormal];
userIsInTheMiddleOfEnteringANumber=NO;
}
else{
another type code and 
[myButton setTitle:@"Clear" forState:UIControlStateNormal];

userIsInTheMiddleOfEnteringANumber=YES;
}
//remaining method with  

}

ブール値を正しく取得できなかったので、必要に応じてブール値を変更してください。これを試してみてください

于 2013-06-27T09:26:26.620 に答える
0

@synthesize1 つの解決策は、userIsInTheMiddleOfEnteringANumberプロパティではなく、自分でコードを記述することです。

BOOLクラスにプライベート変数を追加し、メソッドuserIsInTheMiddleOfEnteringANumbersetUserIsInTheMiddleOfEnteringANumber:メソッドを記述します。ゲッターは「バッキング」変数を返す必要があります。セッターは古い値と新しい値をチェックして、古い値がNOで新しい値が であるかどうかを確認する必要がありYESます。この場合、セッターはボタンのタイトルを適切に変更する必要があります。

于 2013-06-27T03:14:34.110 に答える