Iphone: передача UIImage через segue на другой контроллер - PullRequest
2 голосов
/ 22 ноября 2011

У меня проблема с передачей изображения, которую я не понимаю.Я хочу отобразить UIImage UIImageView на другом контроллере, если пользователь выполняет «Жест длинного нажатия».Будет показан другой контроллер, но изображение, которое я передаю, не будет отображаться.

Кнопка связана с третьим контроллером через модальную раскадровку.Там пользователь может захватить изображение.На «ОК» контроллер переключается обратно на первый, и захваченное изображение будет отображаться в UIImageView.Никаких проблем пока нет.Чтобы добиться длинных направляющих жестов нажатием на другой контроллер, я бросил жест на раскадровку и подключил к ней кнопку.Если пользователь выполняет жест, будет выполнена следующая функция:

- (void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{
    if([[segue identifier] isEqualToString:@"toPreview"]){
        PreviewViewController *pvc = (PreviewViewController *)[segue destinationViewController];
        [pvc setImage:signatureView.image];
    }
}

. SignatureView - это UIImageView, который отображает захваченное пользователем изображение (в данном случае подпись).функция setImage: (UIImage *) - одна из многих возможностей, которые я пробовал.

Вот код контроллера, который должен отображать изображение

@interface PreviewViewController : UIViewController

@property(nonatomic, retain) IBOutlet UIImage *previewImage;
@property (weak, nonatomic) IBOutlet UIImageView *previewImageView;

- (void) setImage:(UIImage *)image;

@end

@implementation PreviewViewController

@synthesize previewImage;
@synthesize previewImageView;

- (void) setImage:(UIImage *)image {
    previewImage = image;
    previewImageView.image = previewImage;
    [previewImageView setNeedsDisplay];
}

...

Как я уже говорил, я пробовал много возможностей, но ничто не отображало переданный UIImage в previewImageView.Я попытался написать изображение previewImageView непосредственно с первого контроллера, я передал полный UIImageView первого контроллера, ...

Я не понимаю, в чем моя вина.Кто-нибудь может мне помочь?Я использую XCode 4.2 и iOS 5 SDK

Ben

Ответы [ 2 ]

0 голосов
/ 21 июля 2014

Я думаю, что передача данных между контроллерами представления в разработке iOS называется протоколом или @protocol. Я ненавижу быть одним из тех парней, которые говорят «ссылаться на это», но это то, что я бы сделал. веселит

0 голосов
/ 22 ноября 2011

Вы не можете вызвать [pvc setImage:signatureView.image];, поскольку signatureView не существует, когда вызывается prepareForSegue:.

Вы можете передать имя изображения и установить его в viewWillAppear.

* 1007.*
...