【问题标题】:Passing a UIImage to a SubView's UIImageView?将 UIImage 传递给 SubView 的 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 的视图。
  • 我已经更新了答案,请关注并使其正确。如果真的有帮助

标签: ios iphone objective-c uiimageview uiimage


【解决方案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 版本更高,则会自动合成。无需手动操作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 2017-08-08
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多