将 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 添加为subviewview。所以使用下面的代码,其中backgroundViewimageview:-

[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? [关闭]

如何将 UIImage 传递给 phonegap 以在 Image 控件中查看?

从字典到 uiimage 的 url

超出superView的subview响应方法

如何将图像从 TableViewCell 传递到 UIImage