在不同的ViewController故事板上使用IBOutlets

时间:2012-11-24 22:33:37

标签: objective-c xcode uiimageview storyboard viewcontroller

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

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

我只是希望能够在另一个viewcontroller上使用该UIImageView。我希望你能帮助我。

2 个答案:

答案 0 :(得分: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中显示它。

ORIGINAL:

-(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之前不存在,这就是你必须将图像传递给它的原因。

答案 1 :(得分:0)

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

例如,如果您通过segue从一个VC传递到另一个VC,则可以从prepareForSegueWithIdentifier:中的源处理目标VC中的属性。