0

我有一个已正确连接的UIViewController包含一个(我可以在控制器内设置图像)。UIImageView

我还设置了一个 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"]];

任何想法如何解决这个问题以及为什么我会为空?

4

2 回答 2

2

第一:网点应该很弱

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

您必须将 imgQRCode 插座连接到您的 viewController,并且您可以在 viewDidLoad 中使用它。

于 2012-11-29T10:51:09.173 回答
0

对于不属于当前可见视图控制器的所有 UI 控件实例,您将获得 null。因此,由于这个原因,您对该 UI 控件的所有调用都不会执行与 UI 相关的操作。

如果要更新不属于当前可见视图控制器的任何 UI 控件,可以使用应用委托。它是唯一集中在所有视图控制器之间的地方。

有一种称为“协议委托”的机制可以调用一些方法来从当前可见的视图控制器更新 UI 部分。您可以通过此 URL了解有关此内容的详细信息。

如果您选择“协议委托”的方法,那么详细探索方法执行流程。当你从当前可见视图控制器的方法调用协议时,调用者方法完成后会调用对应的协议实现方法。所以你需要注意同步。

于 2012-11-29T11:33:32.503 回答