В моем первом контроллере представления у меня есть свойство UIImage, которое синтезируется в файле реализации. Во втором представлении контроллера, который был нажат, я создаю там объект UIImage и в то же время устанавливаю его в свойство UIImage с первого контроллера представления. В конце концов, я отклоняю второй контроллер представления. Тем не менее, похоже, что изображение не было сохранено после отклонения диспетчера view. Я понимаю, что, поскольку UIImage является указателем, передача данных была ссылкой, и поскольку контроллер был уволен, также был UIImage. Правильно ли это, и есть ли лучший способ выполнить эту задачу? Для вашей справки я использую ARC.Передача UIImage между ViewControllers
В первом контроллере представления (firstVC),
@property (strong, nonatomic) UIImage *image;
Во втором контроллере представления,
[firstVC setImage:self.ivarUIImageView.image];
, где ivarUIImageVIew определяется как:
@property (strong, nonatomic) IBOutlet UIImageView *ivarUIImageView;
Теперь давайте говорить в третьем view, у меня есть метод viewDidLoad:
imgView = [[UIImageView alloc] initWithImage:firstVC.image];
где imgView определяется как:
@property (strong, nonatomic) IBOutlet UIImageView *imgView;
В вашем третьем VC, как вы определяете firstVC? Если вы регистрируете firstVC (в viewDidLoad третьего VC), то это nil? – rdelmar
, если вы просто хотите иметь дело с одним и тем же изображением, почему бы не поместить его в одноэлементный класс (например, AppDelegate)? – Mehdi
То, что вы здесь делаете, действительно неясно. Во втором контроллере вы вызываете setImage на firstVC - что такое firstVC? Указатель на первый вид контроллера? Изображение? В третьем контроллере представления вы говорите, что у вас есть IBOutlet imgView, но затем вы назначаете init it - вы не хотите делать tht, если это выход к представлению изображения в IB. – rdelmar