1

これは比較的単純な問題のように思えますが、私は困惑しています。ヘルプ/洞察をいただければ幸いです。

問題:

画面に UIImagePickerController ボタンがあり、ユーザーがカメラロールから画像を選択するまでカスタム画像を最初にロードしたいと思います (カスタム画像は + 記号です)。ただし、UIImagePickerController ボタンは、ユーザーが初めてクリックするまで空白で表示されます。最初のクリック後、正常に動作しますが、何らかの理由でデフォルトの画像で初期化されません。コントローラーの viewDidLoad メソッドからコードを貼り付けました。

コード :

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);  
NSString *documentsPath = [paths objectAtIndex:0];
NSString *filePath = [documentsPath stringByAppendingPathComponent:[self.detailItem cardName]];
filePath = [filePath stringByAppendingPathExtension:@"png"];
NSData *pngData = [NSData dataWithContentsOfFile:filePath];
imgPickerButton.imageView.image = [UIImage imageWithData:pngData];

それで、私は何を間違っていますか?洞察をいただければ幸いです。ご協力いただきありがとうございます。

これは、ストーリーボードの画面のデザイン ビューを示しています

ユーザーがボタンをクリックするまでビューがどのように表示されるかのスクリーンショット

4

3 に答える 3

0

わかりました!viewDidLoadメソッドでUIButtonの画像を設定していました。これは、ビューが描画された後に呼び出されるメソッドです。したがって、デフォルトの画像は最初のクリックまで表示されませんでした。最初のクリックでUIButtonが再描画されます。この問題を解決するために、コードをawakeFromNibメソッドと出来上がりに移動しました!! それはうまくいきます。デフォルトの画像はスムーズに読み込まれます...

于 2013-01-05T04:08:59.757 に答える
0

デバッグしますか?

//Your Code

//Debug it with muscle
NSLog(@"\n**** I Love Debug Statements! *****\ndocumentsPath: %@\n filePath: %@\ndetailItem: %@\ndefault image: %@", documentsPath, filePath, self.detailItem, imgPickerButton.imageView.image);

これを初めて呼び出そうとすると、「self.detailItem」は nil になると思います...

于 2013-01-05T03:19:59.483 に答える
0

写真から、これはテーブルビューの一部のように見えますか? この場合、上記のコードが実行される前にテーブルビュー セルがロードされます。

于 2013-01-05T03:26:05.767 に答える