将 UIImage 传递给 SubView 的 UIImageView?
Posted
技术标签:
【中文标题】将 UIImage 传递给 SubView 的 UIImageView?【英文标题】:Passing a UIImage to a SubView's UIImageView? 【发布时间】:2014-01-11 01:11:27 【问题描述】:我正在尝试将 UIImage 值传递给作为子视图添加的视图内的 UIImageView。
这是我在 mainViewController 中所做的:
- (IBAction)selectStore:(id)sender
StoreSelectorViewController *SSVC = [[StoreSelectorViewController alloc] initWithNibName:@"StoreSelectorViewController" bundle:nil];
[self.navigationController addChildViewController:SSVC];
[SSVC.backgroundView setImage:[UIImage imageNamed:@"CoolBG.png"]];
[self.view.window addSubview:SSVC.view];
我在我的 StoreSelectorViewController.h 文件中执行了以下操作:
@property (nonatomic, retain) IBOutlet UIImageView *backgroundView;
我还在XIB文件中链接了它。
一切都加载,除了我从未收到 UIImage 值。谢谢
【问题讨论】:
selectStore:
被调用了吗?您已将其设置为 IBAction
,但您确定已在 Interface Builder 中正确连接它吗?也许在该消息中添加NSLog
语句以确保它被调用。
嘿格雷格!是的事实上,我实际上在 StoreSelectorViewController 中有一个按钮,它确实出现在屏幕上,然后当我单击它时,它会删除整个视图。因此,问题似乎与 uiimageview 相关。让我尝试一些 NSLog。
另外,这看起来有点奇怪。您正在向UIWindow
添加一个子视图,而不是当前的UIView
,但您也在向UINavigationController
添加另一个UIViewController
。你确定你不是故意[self.navigationController pushViewController]
,而不是添加子视图或CVC?
我正在尝试在 MainViewController 所在的 navigationController 前面添加 subView,这就是为什么我尝试将它添加到 UIWindow,而不是 ViewController 的视图。
我已经更新了答案,请关注并使其正确。如果真的有帮助
【参考方案1】:
有时使用它似乎不起作用:
[SSVC.backgroundView setImage:[UIImage imageNamed:@"CoolBG.png"]];
所以我使用这两个版本的版本,以稍微不同的顺序,设置图像,然后显示其父级 (SSVC):
StoreSelectorViewController *SSVC = [[StoreSelectorViewController alloc] initWithNibName:@"StoreSelectorViewController" bundle:nil];
UIImage *img = [UIImage imageNamed:@"CoolBG.png"];
[SSVC.backgroundView setImage:img];
[self.navigationController addChildViewController:SSVC];
[self.view.window addSubview:SSVC.view];
【讨论】:
见上面的评论/编辑,让我们尝试以不同的顺序创建这些。 @Fluffhead,addSubview 是唯一 UIView 的方法。我的意思是尽管有 self.view.window addSubview。应该是这样self.view addSubview吧??【参考方案2】:无论如何,你真的不应该打电话给addChildViewController
,这不是你想要的。您也没有使用UIViewController
,只是窃取了它的view
属性。有可能正因为如此,UIViewController
没有完全实例化,因为它没有呈现 (viewWill/Did
) 方法永远不会被调用,所以 backgroundView
可能是 nil
。
【讨论】:
你会推荐什么?我正在尝试使用 xib 创建自定义视图。谢谢! @user1886754,你也试过在你的视图上添加 backgroundView 吗?? 只制作一个不填满屏幕的 UIViewController 也没有错。【参考方案3】:问题出在这一行[self.view.window addSubview:SSVC.view];
所以只需将这一行替换为下面的行:-
您还想将imageview
添加为subview
的view
。所以使用下面的代码,其中backgroundView
是imageview
:-
[SSVC.view addSubview:SSVC.backgroundView];
[self.view addSubview:SSVC.view];.
【讨论】:
它现在实际上打破了它。不过谢谢! 我的意思是在添加这行代码之后。你必须像这样添加 [self.view addSubview:SSVC.view];。你试过了吗?? 你记得在.m里合成backgroundView吗? 如果 xcode 版本更高,则会自动合成。无需手动操作。以上是关于将 UIImage 传递给 SubView 的 UIImageView?的主要内容,如果未能解决你的问题,请参考以下文章
NSCache UIImage 数据从 oneViewController 传递到 anotherViewController
如何将 swiftUI 的图像传递给 UIImage? [关闭]