0

我有一个带有两个不同 ViewController 的故事板应用程序。在第二个 ViewController 我有一个 UIImageView ,我想在第一个上调用那个 UIImageView 。我一直在寻找解决方案,但找不到任何适合我的方法。

@property(nonatomic, retain) IBOutlet UIImageView *pic;

我只想能够在另一个视图控制器上使用该 UIImageView。我希望你能帮助我。

4

2 回答 2

1

编辑:

是的,你可以尝试设置你的 UIImageView 为 segue 做准备。我已经尝试过了,它似乎有效。你可以这样做:

**我假设您要使用的控制器称为 NewViewController **我还假设您的 NewViewController 有一个名为 imageView 的 UIImageView

-(void)prepareForSegue....
  {
   if ([segueIdentifier isEqual....])
       {
        NewViewController *newController=(NewViewController *)[segue destinationViewController];

        [[newViewController imageView]setImage:self.someUIImageFromCurrentClass];
        [[newViewController imageView]setNeedDisplay];
       }
  }

是的,您必须在当前类中创建一个 UIImage(在本例中是 self.someUIImageFromCurrentClass)。关键是您正在从当前 ViewController(当前类)中获取图像并将其显示在您正在使用的 ViewController 中。

原来的:

-(void) prepareForSegue: (UIStoryboardSegue *)segue sender:(id)sender
{
  if ([segue.identifier isEqualToString:@"your segue name"])
     {
       [segue.destinationViewController setYourUIImage:self.someImageFromCurrentClass];
     }
}

请务必为您要使用的控制器导入 .h 文件。

其次,YourUIImage 是一个 UIImage ,它在您要使用的控制器中公开声明(就像迈克尔提到的那样)。

在目标控制器中,您需要获取该 UIImage 并将其设置为 UIImageView 的图像:

[self.myImageView setImage:YourUIImage]; // <-- you can do this in ViewDidLoad or ViewWillAppear

那应该让你去

**另外我想值得一提的是,segue 总是会创建一个你正在 segue 的控制器的新实例,它在 segue 之前不存在,这就是你必须将图像传递给它的原因。

于 2012-11-24T22:54:51.687 回答
0

您不能在视图控制器 (VC) 之间使用插座,因为一个 VC 无法自动引用另一个。您必须公开允许您需要的操作的公共属性或方法,并找到某种方法从另一个 VC 传递对一个 VC 的引用。

例如,如果您通过 segue 从一个 VC 传递到另一个 VC,您可以从prepareForSegueWithIdentifier:.

于 2012-11-24T22:39:37.677 回答