1

だから私はUIImageViewビューを持っています。UIPickerViewControllerビューには、またはカメラ コントロールをポップするためのボタンもあります。誰かが画像を選択するmyImageView.imageと、プロパティが設定され、ビューに画像が表示されます。画像の保存は行われません...選択した内容を表示するだけです。

を使用しているときにUIPickerViewController、メモリ警告が表示されることがあります。ピッカーが開いているため、 my を含む他のすべての非表示ビューUIImageViewが解放され、ピッカーが閉じると viewDidLoad が再度呼び出されます。これは予想通りです。しかし、その過程で、画像が元の「画像を選択」画像プレースホルダーに戻るため、表示していた画像が失われます。

しかし、メモリ警告の BEFORE にあったイメージをロードしてUIImageView戻すにはどうすればよいUIImageViewですか? それは記憶にあったので、今は失われています。ユーザーがピッカーからそれを選んだので、私はそれが場所だとは知りません。

itemImageView.image = [info objectForKey:UIImagePickerControllerOriginalImage];

その失われたイメージを回復する方法についてのアイデアはありますか? または、メモリ警告が発生した場合に再度使用するために、変数またはデバイスに保存する必要がありますか??

4

2 に答える 2

1

画像への参照を保持し、UIImageView に表示する必要があります。たとえば、次のプロパティに保存しますselectedImage

.h:

@property (nonatomic, retain) UIImage* selectedImage;

イメージ ピッカー デリゲート:

self.selectedImage = [info objectForKey:UIImagePickerControllerOriginalImage];
itemImageView.image = selectedImage;

その後、itemImageViewメモリ不足のために (残りのビューと共に) がアンロードされても、画像は保持されます。でviewDidLoad、表示すべき画像があるかどうかを確認します。

if (selectedImage != nil)
    itemImageView.image = selectedImage;

アプリにとって適切なときにリリースselectedImageするようにしてください。たとえば、ユーザーがこの画面を超えて進んだとき、この画像の選択をキャンセルしたとき、またはファイル システムに保存したときなどです。

于 2012-04-18T09:59:27.730 に答える
0

はい、画像用の変数があり、画像を保持する方が良いでしょう。

于 2012-04-18T05:36:33.887 に答える