0

我想使用 iCarousel(一个提供封面流滚动样式的库)我用 XIB 创建了一个视图。在那个视图上,我有 UIImageView 并且我有一个用于该视图的控制器,其中设置了所有 IB 东西(FileOwner 的“视图”设置为我的视图,并且有一个 UIImageview 的出口)

我以编程方式创建控制器

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 上发现了一个问题,其中解释说在将图像添加到视图层次结构之前将图像设置为图像视图实际上不起作用,这意味着我只能在 ViewDidLoad 之后以编程方式设置图像。但在我的情况下,我想用不同的值初始化每个实例,所以在 ViewDidLoad 中添加代码不够健壮......

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

iv1.view.tag

将导致视图被加载

那么我该怎么做呢?把它藏在别人下面?丑陋的

谢谢

4

1 回答 1

0

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

于 2012-10-11T09:27:01.227 回答