電卓アプリに削除キーを実装したいと考えています。これに対する私の擬似コードは次のとおりです。
foo = length of current number
bar = length of current number-1
current number = current number with character at index (foo-bar) removed
Objective-C でこれを行うために、NSRange 関数と StringbyappendingString メソッドを使用してこれを実装しようとしました。
- (IBAction)DelPressed {
if ([self.display.text length] >=2)
{
int len = [self.display.text length];//Length of entire display
//Add to the brainlong printing out the length of the entire display
self.brainlog.text = [NSString stringWithFormat:@"Len is %g",len];
int le = ([self.display.text length]-1);//Length of entire display - 1
NSString *lestring = [NSString stringWithFormat:@"LE is %g",le];
//Add to the brainlog printing out the length of the display -1
self.brainlog.text = [self.brainlog.text stringByAppendingString:lestring];
NSRange range = NSMakeRange(le, len);//range only includes the last character
self.display.text = [self.display.text stringByReplacingCharactersInRange:range withString:@" "];//Replace the last character with whitespace
}
Brainlog への出力 (つまり、le と len の両方の長さ) は次のとおりです。
Len is -1.99164 Le is -1.99164
見にくいですが、iOS シミュレーターを使用して電卓に入力した数値のイメージを次に示します。
le の値を変更しようとしましたが (つまり、ディスプレイの長さを -3 または -5 にするなど)、le と len の両方が同じままです。
また、len を参照して le を作成しようとしました。
int len = [self.display.text length];//Length of entire display
//Add to the brainlong printing out the length of the entire display
self.brainlog.text = [NSString stringWithFormat:@"Len is %g",len];
int le = len-1;
しかし、両者の値は依然として同じです。NSRange を使用してディスプレイの最後の文字を削除するにはどうすればよいですか?
編集:ダスティンの修正を使用して、かなり長い関数を6行のコードに減らしました:
-(IBAction)DelPressed{
if ([self.display.text length] >=2)
{
self.display.text = [self.display.text substringToIndes:[self.display.text length] -1];
}
}