我有一个带有两个不同 ViewController 的故事板应用程序。在第二个 ViewController 我有一个 UIImageView ,我想在第一个上调用那个 UIImageView 。我一直在寻找解决方案,但找不到任何适合我的方法。
@property(nonatomic, retain) IBOutlet UIImageView *pic;
我只想能够在另一个视图控制器上使用该 UIImageView。我希望你能帮助我。
我有一个带有两个不同 ViewController 的故事板应用程序。在第二个 ViewController 我有一个 UIImageView ,我想在第一个上调用那个 UIImageView 。我一直在寻找解决方案,但找不到任何适合我的方法。
@property(nonatomic, retain) IBOutlet UIImageView *pic;
我只想能够在另一个视图控制器上使用该 UIImageView。我希望你能帮助我。
是的,你可以尝试设置你的 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 之前不存在,这就是你必须将图像传递给它的原因。
您不能在视图控制器 (VC) 之间使用插座,因为一个 VC 无法自动引用另一个。您必须公开允许您需要的操作的公共属性或方法,并找到某种方法从另一个 VC 传递对一个 VC 的引用。
例如,如果您通过 segue 从一个 VC 传递到另一个 VC,您可以从prepareForSegueWithIdentifier:
.