gpt4 book ai didi

objective-c - 调用initWithCoder后,IBOutlet为零

转载 作者:行者123 更新时间:2023-12-01 14:00:56 26 4
gpt4 key购买 nike

一个简单的问题,我已经使用情节提要在UIViewController中定义了一个UIImageView,称为bigImageView
在该UIViewController的h文件中声明如下:

 @property (retain, nonatomic) IBOutlet UIImageView *bigImageView;

在我的 appDelegate上,按如下所示初始化UIViewController:
imageViewController = [storyboard instantiateViewControllerWithIdentifier:@"chosenImageController"];

这会在我的UIViewController m文件上调用initWithCoder:
-(id)initWithCoder:(NSCoder *)aDecoder
{
self = [super initWithCoder:aDecoder];
if (self) {
// Custom initialization
}
return self;
}

该函数仅被调用一次,因此没有双重初始化。
但是,稍后,当我检查 bigImageView指针时,它仍然为零。

初始化不应该为其分配内存吗?
我认为这就是为什么当我尝试设置此UIImageview来保存UIImage时不显示图像的原因
谢谢

最佳答案

您无需定义initWithCoder,因为其中没有自定义逻辑。我会删除该样板代码。

这是我要检查的内容:

  • 在情节提要中,确保正确设置了视图控制器的类。
  • 通过在@property附近寻找一个圆圈,确保插座在情节提要中正确连接。它应该是实心圆,而不是圆轮廓。
  • 确保仅在调用viewDidLoad之后才读取该值。 Apple唯一的保证是在此方法调用之后设置插座。

  • 更新:听起来像您想在加载视图之前访问图像视图。没有办法做到这一点。一种方法是调用 viewController.view,它将强制加载视图,但是有许多原因使您不应该这样做。

    更好的方法是在视图控制器上实现属性,该属性在未加载视图和加载视图时均适用。您可以看到一个优雅的解决方案 in this question的示例。请注意,如果加载了视图,则如何通过 photographerLabel方法设置 didSet。另一方面,如果未加载视图,则将通过 viewDidLoad方法对其进行设置。有关该代码的Objective-C版本或更多详细信息,请参阅该问题中的链接视频。

    关于objective-c - 调用initWithCoder后,IBOutlet为零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22740910/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com