(iOS) Как я могу использовать UIImageView в другом представлении? - PullRequest
0 голосов
/ 19 марта 2012

У меня есть контроллер представления с UIScrollView с кучей UIImageViews в качестве подпредставлений. Существует переход к другому контроллеру представления, но я хочу повторно использовать UIImages, которые уже находятся в памяти, а не загружать их снова для эффективности. Но если я укажу мой новый UIImageView на существующий, ничего не появится.

Мне пришлось использовать переменную промежуточного указателя (imageViewPointer), как если бы я назначал ее непосредственно в методе prepareForSegue, NSLog из каждого контроллера представления будет показывать разные адреса. Этот обходной путь NSLogs показывают тот же адрес, но все равно ничего не появляется.

Если вместо этого использовать переназначение свойства .image, изображение появляется, но изображения с первого контроллера представления загружаются асинхронно, поэтому свойство .image может измениться.

На первый взгляд контроллер

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{

    NextViewController *nextViewController = [segue destinationViewController];
    nextViewController.imageViewPointer = [[myScrollView subviews] objectAtIndex:myIndex];
    NSLog(@"%@", [[myScrollView subviews] objectAtIndex:myIndex]);
}

Во втором представлении контроллер

@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];
}

Ответы [ 2 ]

1 голос
/ 19 марта 2012

Если вы просто назначите такое представление, оно не появится в иерархии представлений вашего текущего представления контроллера представления.Вам нужно будет сделать что-то вроде:

[self.view addSubview: imageView];

Однако я бы не советовал.Лучше просто назначить изображение вида изображению другого вида.

self.imageView.image = self.imageViewPointer.image;
0 голосов
/ 19 марта 2012

Либо вы повторно используете UIImage, либо метод, который вы используете, немного неправильный, поскольку вы присваиваете imageViewPointer для imageView, который (imageViewPointer) не является подвидом представления вашего контроллера представления. Поэтому добавьте подпредставление imageViewPointer или imageView после назначения imageViewPointer.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...