2

xViewController.h に、1 つの変数を持つビュー コントローラーがあります。

@property(nonatomic) int x;

x固定の最近の値を設定することはできますか? たとえば、メソッドxが値 5 に設定され、このビュー コントローラーがリロードされると、値xは現在のように 0 ではなく 5 になるはずです。

たとえば、ViewController では次のようになります。

- (IBAction)btnPressed:(id)sender {
_x++;
}

x は、ボタンをタップするたびに増加する必要があります >>> 0,1,2,3,4... (アプリの再起動後でも)

事前にすべての回答に感謝します。

4

1 に答える 1

0

シンプルで明確な方法を使用して、値を保存できます。

あなたのインターフェース

@interface FirstViewController : UIViewController

@property (nonatomic) int x;
@property (strong, nonatomic) IBOutlet UILabel *label;

- (IBAction)buttonPressed:(id)sender;
- (void)updateLabel;

@end

あなたのセッター

- (void)setX:(int)x
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    [userDefaults setInteger:x forKey:@"MyValue"];
    [userDefaults synchronize];
}

あなたのゲッター

- (int)x
{
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    return [userDefaults integerForKey:@"MyValue"];
}

あなたの行動:

- (IBAction)buttonPressed:(id)sender 
{
    [self updateLabel];
    self.x++;
}

あなたのviewDidAppear:メソッド:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [self updateLabel];
}

ラベルを更新する方法:

- (void)updateLabel
{
    [self.label setText:[NSString stringWithFormat:@"%d", self.x]];
}

:

  1. UserDefaults はアプリケーション全体のインスタンスにすぎないため、@"MyValue" は一意の文字列である必要があります。
  2. integerForKey は int 値のみを格納するメソッドです。

更新: 申し訳ありませんが、@ JoshHinmanのおかげで integerForKey が正しい方法です。

于 2013-07-27T21:43:03.220 に答える