如何在IOS中不显示视图的情况下完全准备视图?

时间:2012-10-11 09:09:07

标签: ios xcode view

我想使用iCarousel(一个提供coverflow滚动样式的库) 我用XIB创建了一个View。在那个视图上我有UIImageView 我有一个控制器用于该视图,所有的IB设置(FileOwner的'视图'设置为我的视图,并且有一个UIImageview的出口)

以编程方式创建Controller

SBTViewController* iv1 = [[SBTViewController alloc] initWithNibName:@"SBTViewController_iPhone" bundle:nil];
SBTViewController* iv2 = [[SBTViewController alloc] initWithNibName:@"SBTViewController_iPhone" bundle:nil];

然后

UIImage* im1 = [UIImage imageNamed:@"1.png"];
iv1.imView.image = im1;


UIImage* im2 = [UIImage imageNamed:@"2.png"];
iv2.imView.image = im2;

请注意,我现在不会添加要显示的iv1控制器视图或者是任何层次结构的一部分。 相反,我存储指针,一段时间后(当旋转木马移动时)我只是将iv1.view提供给旋转木马以显示它。

我可以看到视图而不是图像...

在搜索之后,我在stackoverflow上发现了一个问题,其中解释了在将图像添加到视图层次结构之前将图像设置为imageview实际上不起作用,这意味着我只能在ViewDidLoad之后设置图像。 但在我的情况下,我想用不同的值初始化每个实例,因此在ViewDidLoad中添加代码不够健壮......

编辑:我刚刚发现只是像这样访问控制器的视图参数

iv1.view.tag

将导致加载视图

那我该怎么办呢? 隐藏在别人的下方?丑

感谢

1 个答案:

答案 0 :(得分:0)

您的问题是,当您创建UIImage时,尚未创建UIImageView。所以有两个解决方案:在viewDidLoad之后创建你的UIImage。但是如果你不想要它,你可以从你的XIB中删除你的UIImageViews并在你的类的init方法中自己创建它们,然后将它们添加到viewDidLoad中的视图层次结构中。