0

アプリの実行が停止した場合、またはデバイスの電源がオフになった場合、画像ピッカーから選択したテキスト フィールドと画像はすべてリセットされ、空白に設定されます。この情報を保持するにはどうすればよいですか?

シングルトンを (仲間のメンバーの助けを借りて) 使用しましたが、イメージを保持できます...つまり、アプリが強制終了されるか、デバイスの電源がオフになるまでです。その後、それはなくなりました。

.m

- (void)viewDidLoad
{
    singletonObj = [Singleton sharedSingletonController];
    imageView.image = singletonObj.imagePicked;
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}

- (void)viewDidUnload
{
    [self setImageView:nil];
    [super viewDidUnload];
    // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
 {
     return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
 }

 #pragma mark - Action

- (IBAction)done:(id)sender
{
    [self.delegate flipsideViewControllerDidFinish:self];
}

- (IBAction)btn:(id)sender {

    UIImagePickerController * picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;

    if((UIButton *) sender == choosePhotoBtn) {
        picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
    }

    [self presentModalViewController:picker animated:YES];
}

- (void)imagePickerController:(UIImagePickerController*)picker didFinishPickingMediaWithInfo:(NSDictionary*)info

{
    NSData  *dataImage = UIImageJPEGRepresentation([info objectForKey:@"UIImagePickerControllerOriginalImage"],1);

    UIImage *img = [[UIImage alloc] initWithData:dataImage];
    singletonObj.imagePicked = img;
    imageView.image = img;
    [picker dismissModalViewControllerAnimated:YES];
}
@end
4

2 に答える 2

1

メモリには、揮発性 (RAM) と永続メモリ (つまり、ハード ドライブやその他のストレージ) の 2 種類があります。

プログラム/コンピュータがシャットダウンすると、揮発性メモリはクリアされて失われます。

シングルトンの使用は問題ありませんが、セッションからセッションへのデータの保持とはまったく関係ありません (セッションとは、プログラムが実行されている時間、つまりアプリケーションの起動から終了までを意味します)。

必要な方法を使用して、セッションからセッション、ファイルへと保持したいデータを保存する必要があります。保存する情報に応じて、保存のためのさまざまな専用メカニズムがあります。

  • (ユーザー設定のNSUserDefaultsなど)。
  • Core Dataは、データを構造化し、ファイル (別名永続ストア) に保存/読み取るためのメカニズムを定義するフレームワークです。
  • シリアライゼーションも使用できます。
  • または、いつでも手動でファイルを操作できます。
  • NSDataデータオブジェクトからファイルをwriteToFile:atomically:作成します。画像を保存する場合は、UIImage の基になるデータ (つまり: UIImagePNGRepresentation(...)) を取得する必要があります。
于 2012-05-04T20:50:47.397 に答える
0

コアデータを使用する必要があります。UIIimage からの NSData と NSString を受け入れることができます。アプリケーションが終了する直前に情報が保存されるように、appDelegate 内の関数 AppicationWillTerminate を使用する必要があります。

これを適切に機能させるにはかなりの量の作業が必要になりますが、それほど難しいことではありません。コアデータを理解するのに助けが必要な場合は、このリンクをお勧めします

http://www.raywenderlich.com/934/core-data-on-ios-5-tutorial-getting-started

于 2012-05-03T20:10:25.817 に答える