-6

NSUserDefaultsを使用して、別のView Controllerに整数を保存しているので、これがプッシュされたときに、使用する画像がわかります。何らかの理由で、シミュレーターはimage1のみを使用しますが、私の電話はimage2のみを使用します。私に何ができる?

if ([[NSUserDefaults standardUserDefaults] integerForKey:@"key"] == 1){

    leftStill = [UIImage imageNamed:@"image1.png"];

}

if ([[NSUserDefaults standardUserDefaults] integerForKey:@"key"] == 2) {

    leftStill = [UIImage imageNamed:@"image2.png"];

}

[imageView setImage:leftStill];
4

3 に答える 3

1

- (BOOL)synchronize;NSUserDefaultsに値を設定した後、呼び出しましたか?

于 2012-08-14T23:54:00.723 に答える
0

NSUserDefaults に値を保存するときは、次のようにします。

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setInteger:1 forKey:@"key"];
[defaults synchronize];

同期は定期的に行われますが、いつ行われるかは保証されません。したがって、私は通常、NSUserDefaults でキーの値を設定するたびに同期します。

prepareForSegue を使用するなど、達成しようとしているタスクにより適したものを検討することもできます。

于 2012-08-15T00:42:35.747 に答える
0

このコード ブロックの前に nil/unallocated の leftImage と imageView から始めていますか?

整数値をテストしているので、次のコードがうまく機能しないのではないかと思います。コードが現在行っている値の 2 つの読み取りを回避する可能性があるだけでなく、問題の原因である可能性があります。中間ホルダー leftImage 自体の使用:

switch([[NSUserDefaults standardUserDefaults] integerForKey:@"key"]) {
  case 1:
    [imageView setImage:[UIImage imageNamed:@"image1.png"];
    break;
  case 2:
    [imageView setImage:[UIImage imageNamed:@"image2.png"];
    break;
  default:
    break;
}
于 2012-08-15T00:32:29.460 に答える