我有一个带有 UIScrollView 的 View Controller ,其中有一堆 UIImageView 作为 subview 。有一个到另一个 View Controller 的segue,但我想重用内存中已经存在的 UIImages,而不是为了效率而再次加载它们。但是,如果我将新的 UIImageView 指向现有的 UIImageView,则不会显示任何内容。
我必须使用中间指针变量(imageViewPointer),就像我直接在prepareForSegue方法中分配它一样,每个 View Controller 的NSLog将显示不同的地址。此解决方法 NSLogs 显示相同的地址,但仍然没有显示任何内容。
如果我使用重新分配 .image 属性,图像会显示,但来自第一个 View Controller 的图像会异步加载,因此 .image 属性可能会更改。
在第一个 View Controller 中
-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
NextViewController *nextViewController = [segue destinationViewController];
nextViewController.imageViewPointer = [[myScrollView subviews] objectAtIndex:myIndex];
NSLog(@"%@", [[myScrollView subviews] objectAtIndex:myIndex]);
}
在第二个 View Controller 中
@interface nextViewController : UIViewController
@property (retain, nonatomic) IBOutlet UIImageView *imageView;
@property (retain, nonatomic) UIImageView *imageViewPointer;
@implementation nextViewController
@synthesize imageView, imageViewPointer;
{
self.imageView = self.imageViewPointer;
// [self.imageView setNeedsDisplay]; Doesn't help
NSLog(@"IMAGE VIEW POINTER = %@", self.imageViewPointer);
NSLog(@"IMAGE VIEW = %@", self.imageView);
[super viewDidLoad];
}
最佳答案
如果您只是分配这样的 View ,它不会出现在当前 View Controller 的 View 的 View 层次结构中。您需要执行以下操作:
[self.view addSubview: imageView];
但是,我不建议这样做。最好将 View 的图像分配给另一个 View 的图像。
self.imageView.image = self.imageViewPointer.image;
关于objective-c - (iOS) 如何在另一个 View 中重用 UIImageView?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9765301/