1

電卓アプリを作成しており、電卓画面はUILabelです。削除キーに問題があります。ここに私のコードがあります:

.h

IBOutlet UILabel *display;

.m

- (IBAction)Del 
{
    [display.text substringToIndex:display.text.length -1];
}

エラーはなく、シミュレーターで完全に実行されますが、実際には機能しません。誰でも助けることができます。

4

2 に答える 2

2

-substringToIndex:送信先の文字列の一部のコピーを作成します。

ここにあるものはそのような文字列を作成し、それに対して何もしません。

display.textその文字列を何か、たとえばプロパティに割り当てたいと思われます。

- (IBAction)Del {
    display.text = [display.text substringToIndex:display.text.length -1];
}
于 2012-11-27T19:15:37.750 に答える
1

メソッドの戻り値を無視しておりsubstringToIndex:、ラベルのテキストを更新していません。

次のようなものが必要です。

- (IBAction)Del {
    NSString *oldText = display.text;
    if (oldText.length > 0) {
        NSString *newText = [oldText substringToIndex:oldText - 1];
        display.text = newText;
    }
}

これはまた、空のラベルから削除しようとするのを防ぎます。

于 2012-11-27T19:15:52.187 に答える