Rev*_*nzo 3 iphone interface-builder ios
我有一个简单的选择UINavigationViewController,当选择某个项目时,会创建一个模态视图,其中包含一个UIImageView(PostcardViewController).但是,如果我打电话
PostcardViewController *postcardViewController = [[PostcardViewController alloc] init];
postcardViewController.imageView.image = image;
[self.navigationController presentModalViewController:postcardViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
postcardViewController.imageView是nill,图像永远不会显示出来.如果我切换后两行,并使它:
PostcardViewController *postcardViewController = [[PostcardViewController alloc] init];
[self.navigationController presentModalViewController:postcardViewController animated:YES];
postcardViewController.imageView.image = image;
Run Code Online (Sandbox Code Playgroud)
postcardViewController.imageView已设置,显示正常.所有内容都在Interface Builder中连接,PostcardViewController中没有任何特定代码.通过调试,我发现,viewDidLoad在调用[ ]被调用后,imageView被连接起来,并且viewDidLoad在调用[ presentModalViewController] 时调用了[ ].
为什么这样,我也在这里做错了什么?我想我应该在实际显示之前设置整个视图,但是到目前为止,我必须先显示它才能完全设置它.
您只使用alloc + init创建了视图控制器,而不是视图本身.该视图是延迟加载的,即第一次使用它.要在实际显示视图之前强制创建视图,请执行以下操作:
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];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
730 次 |
| 最近记录: |