gpt4 book ai didi

iphone - iOs:为什么 IBOutlets 在 [[alloc] init] 之后没有连接,而是在 viewDidUnload 之后连接:已被调用

转载 作者:可可西里 更新时间:2023-11-01 06:19:04 24 4
gpt4 key购买 nike

我有一个简单的 UINavigationViewController,当某个项目被选中时,它会创建一个模态视图,其中有一个 UIImageView(下面的 PostcardViewController)。但是,如果我调用

PostcardViewController *postcardViewController = [[PostcardViewController alloc] init];
postcardViewController.imageView.image = image;
[self.navigationController presentModalViewController:postcardViewController animated:YES];

postcardViewController.imageView 为空,图像永远不会显示。如果我切换后两行,并使其成为:

PostcardViewController *postcardViewController = [[PostcardViewController alloc] init];
[self.navigationController presentModalViewController:postcardViewController animated:YES];
postcardViewController.imageView.image = image;

postcardViewController.imageView 已设置,显示正常。一切都在 Interface Builder 中连接起来,而 PostcardViewController 中没有任何特定代码。通过调试,我发现,是在 [viewDidLoad] 被调用之后 imageView 被连接起来,并且 [viewDidLoad] 在我调用 [presentModalViewController].

这是为什么,还有,我是不是做错了什么?我想我应该在实际显示它之前设置整个 View ,但截至目前,我必须先显示它才能完全设置它。

最佳答案

您只是使用 alloc+init 创建了 View Controller ,而不是 View 本身。 View 是延迟加载的,即第一次使用时。要在实际显示之前强制创建 View ,请执行以下操作:

PostcardViewController *postcardViewController = [[PostcardViewController alloc] init];
postcardViewController.view; // Forces the view to be loaded
postcardViewController.imageView.image = image; // Will no longer be nil
[self.navigationController presentModalViewController:postcardViewController animated:YES];

关于iphone - iOs:为什么 IBOutlets 在 [[alloc] init] 之后没有连接,而是在 viewDidUnload 之后连接:已被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4134897/

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