我有一个带有两个不同ViewController的故事板应用程序。在第二个ViewController上我有一个UIImageView,我想在第一个上调用UIImageView。我一直在寻找解决方案,但我找不到任何适合我的方法。
@property(nonatomic, retain) IBOutlet UIImageView *pic;
我只是希望能够在另一个viewcontroller上使用该UIImageView。我希望你能帮助我。
答案 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中显示它。
-(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中的属性。