为什么我不能在其他UIViewController中设置UIViewController的imageView?

时间:2011-09-14 03:25:53

标签: iphone uiviewcontroller

我有两个UIViewControllers。在firstViewController中,有一个按钮,按钮动作是

SecondViewController *controller = [[SecondViewController alloc]init];
UIImage *image1 = [UIImage imageNamed:@"a.jpg"];
controller.imageView.image = image1;
[self presentModalViewController:controller animated:YES];

单击按钮时,会出现SecondViewController的视图,但是imageview的图像没有变为“a.jpg”。我需要帮助,谢谢。

5 个答案:

答案 0 :(得分:1)

你应该做点什么:

FirstViewController

SecondViewController *controller = [[SecondViewController alloc] 
                                                  initWithAnImageNamed:@"a.jpg"];
[self presentModalViewController:controller animated:YES];

SecondViewController

-(id)initWithAnImageNamed:(NSString*)anImage
{
    self.imageView.image = [UIImage imageNamed: anImage];
    return self;
}

旁注:a.jpg应包含在捆绑包中。

答案 1 :(得分:1)

而不是将UIImage发送到secondViewController,您可以发送字符串“a.jpg”,并在seconviewController的viewDidLoad中实现代码

imageView.image = [UIImage imageNamed:imageName];

答案 2 :(得分:1)

我认为你不是为UIImageView分配初始化SecondViewController对象。

添加

controller.imageView = [[UIImageView alloc] init];

还要确保项目文件夹中有a.jpg。

答案 3 :(得分:1)

视图控制器在需要之前不会加载其视图。当您访问其imageView属性时,如果在加载视图之前调用它,则会返回nil。您可以通过显式调用-view

强制视图控制器加载其视图
[controller view];

这是一个kludge,但它的确有效。

答案 4 :(得分:0)

我已经解决了这个问题。我将图像设置为属性而不是将imageview设置为属性。我在firstViewController中设置secondViewController的图像,如下所示:

SecondViewController *controller = [[SecondViewController alloc]init];
UIImage *image1 = [UIImage imageNamed:@"a.jpg"];
controller.image = image1;
[self presentModalViewController:controller animated:YES];

然后在secondViewController的viewDidLoad方法中设置imageView。