3

電卓画面で数字を1桁ずつ削除したいのですが、数字全体しか削除できません。方法はありますか?

-(IBAction)cancelInput:(float)result1{

        NSString *myString = [[NSNumber numberWithFloat:result] stringValue];
        int str=[myString length]-1;
        NSString *newstring = [[NSNumber numberWithInt:str] stringValue];
        calculatorScreen.text= [NSString stringWithFormat:newstring];
        //NSLog(@"%d ",str);
}
4

4 に答える 4

4

どうぞ、

NSString *myString = [[NSNumber numberWithFloat:result] stringValue];
myString = [myString substringToIndex:[myString length]-1];
calculatorScreen.text= myString;
于 2012-05-30T05:25:00.473 に答える
3

int str=[myString length]-1 は、文字列の長さのみを返します。たとえば、番号が 9876 の場合、3(4-1) が返され、新しい文字列は 3 になります。最後の文字を削除する場合は、 myString の部分文字列を作成する必要があります。

string = [string substringToIndex:[string length] - 1];
于 2012-05-30T05:28:44.573 に答える
1
-(IBAction)backPressed:(UIButton *)sender
{
self.display.text=[self.display.text substringToIndex:[self.display.text length]-1];
if ( [self.display.text isEqualToString:@""] || [self.display.text isEqualToString:@"-"])
{
self.display.text =@"0";
}

}

これは、ボタンのコア機能です。基本的な問題のいくつかを処理できるように、自由に if 機能を追加しました。通常どおり、display をプライマリ ラベルに置き換えます。If 関数は、ラベルが空 " " になっていないこと、または負の符号 "-" を持っていないことを確認するのに役立ち、その点で clear と同様に、自動的に "0" に置き換えられます。代わりに clear メソッドを実行できます。しかし、使用

self.display.text =@"0"; 

代わりに、より明確にするために。

于 2012-05-31T09:08:25.633 に答える
0

次のコードを使用します。

else if([character isEqualToString:(NSString*) Delete])
{
    NSInteger index_of_char_to_remove=[_display length]-1;
    if(index_of_char_to_remove>=0)
    {
        [_display deleteCharactersInRange:NSMakeRange(index_of_char_to_remove, 1)];
        last_character_is_operator=NO;
    }
}

「C」を押すと、この状態がチェックされ、データが 1 つずつ削除されます

于 2012-05-30T10:13:31.730 に答える