从外部类调用时,Obj-c UIImageView为null

时间:2012-11-29 10:44:30

标签: objective-c ios uiimageview

我有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"]];

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

2 个答案:

答案 0 :(得分:2)

口渴:网点应该薄弱

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

你必须将imgQRCode插座挂钩到你的viewController,你可以在viewDidLoad中使用它。

答案 1 :(得分:0)

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

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

有一种机制,称为“协议委托”,用于调用某些方法从当前可见的视图控制器更新UI部分。您可以浏览this URL了解详细信息。

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