0

正しく配線されたコンテナがあります(コントローラー内に画像を設定できます)UIViewControllerUIImageView

また、を使用してiVarを設定しました

UIImageView *_imgQRCode;

およびを使用するプロパティ

@property (strong, nonatomic) IBOutlet UIImageView *imgQRCode;

を使用して合成:

@synthesize imgQRCode = _imgQRCode;

しかし、以下のようなものを呼び出すと、画像は何も起こりません。Xcodeで検査すると、参照はメモリ参照です0x00000000。ViewController内で呼び出されたときにコードが機能することに注意してください。以下は、コントローラーが次のようにインスタンス化された他のビューコントローラーから呼び出されます。

QRPopupViewController *qrPop = [[QRPopupViewController alloc] initWithNibName:@"QRPopupViewController" bundle:nil];

[controller.imgView setImage:[UIImage imageNamed:@"sample.png"]];

これを修正する方法と、なぜnullになるのかについてのアイデアはありますか?

4

2 に答える 2

2

Firsty:アウトレットは弱いはずです

@property (weak, nonatomic) IBOutlet UIImageView *imgQRCode;

imgQRCodeアウトレットをviewControllerにフックする必要があり、viewDidLoad内で使用できます。

于 2012-11-29T10:51:09.173 に答える
0

現在表示されているViewControllerの一部ではないすべてのUIControlのインスタンスに対してnullが発生します。したがって、このため、そのUIコントロールへのすべての呼び出しはUI関連の操作を実行しません。

現在表示されているViewControllerの一部ではないUIコントロールを更新する場合は、アプリデリゲートを使用できます。これは、すべてのViewControllerの間に集中している唯一の場所です。

「プロトコルデリゲート」と呼ばれるメカニズムがあり、現在表示されているViewControllerからUIパーツを更新するためのメソッドを呼び出します。詳細については、このURLを参照してください。

「プロトコルデリゲート」のアプローチを選択する場合は、メソッド実行フローを詳細に調べてください。現在表示されているViewControllerのメソッドからプロトコルを呼び出すと、呼び出し元のメソッドの完了後に、対応するプロトコル実装メソッドが呼び出されます。したがって、同期に注意する必要があります。

于 2012-11-29T11:33:32.503 に答える