서브 뷰로 UIImageViews의 힙을 가진 UIScrollView가있는 뷰 컨트롤러가 있습니다. 다른보기 컨트롤러에 segue가 있지만 효율성을 위해 다시로드하지 않고 이미 메모리에있는 UIImages를 다시 사용하려고합니다. 그러나 새로운 UIImageView를 기존의 것으로 지정하면 아무 것도 나타나지 않습니다.(iOS) 다른 뷰에서 UIImageView를 어떻게 재사용 할 수 있습니까?
중간 포인터 변수 (imageViewPointer)를 prepareForSegue 메서드에서 직접 할당 한 것처럼 사용하면 각보기 컨트롤러의 NSLog가 다른 주소를 표시합니다. 이 해결 방법 NSLogs 같은 주소를 표시하지만 여전히 아무것도 나타나지 않습니다.
대신 .image 속성을 다시 할당하면 이미지가 표시되지만 첫 번째보기 컨트롤러의 이미지는 비동기 적으로로드되므로 .image 속성이 변경 될 수 있습니다. 당신은 단순히 그런보기를 할당하는 경우
@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];
}
'[self.view addSubview : imageView];'... UIImageView가 인터페이스 작성기에서 만들어진 경우에도? | 'self.imageView.image = self.imageViewPointer.image;'... 이것은 작동하지만 말했듯이 이미지는 비동기 적으로로드됩니다 (SDWebImage). 너무 빠르면 이미지 속성이 nil 또는 자리 표시 자와 나는 그것에 대한 포인터를 얻게 될 것이다. 동일한 객체를 재사용하면 첫 번째 뷰 컨트롤러에서와 같이 웹에서로드 된 이미지가 업데이트됩니다. – TijuanaKez
SDWebImage를 사용한다면'UIImageView (WebCache)''setImageWithURL :'메소드를 사용해야합니다. – ThomasW
인터페이스 빌더로 작성 되었기 때문에 imageView에 특별한 것은 없습니다. – ThomasW