2013-04-08 6 views
0

В моем первом контроллере представления у меня есть свойство 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; 
+0

В вашем третьем VC, как вы определяете firstVC? Если вы регистрируете firstVC (в viewDidLoad третьего VC), то это nil? – rdelmar

+0

, если вы просто хотите иметь дело с одним и тем же изображением, почему бы не поместить его в одноэлементный класс (например, AppDelegate)? – Mehdi

+0

То, что вы здесь делаете, действительно неясно. Во втором контроллере вы вызываете setImage на firstVC - что такое firstVC? Указатель на первый вид контроллера? Изображение? В третьем контроллере представления вы говорите, что у вас есть IBOutlet imgView, но затем вы назначаете init it - вы не хотите делать tht, если это выход к представлению изображения в IB. – rdelmar

ответ

1

Вы хотите, чтобы убедиться, что UIImage удерживается первым контроллером представления, сделав свойство strong. Также, если вы показываете его в UIImageView, вам нужно будет установить image UIImageView на новое изображение, чтобы увидеть изменение, отраженное в пользовательском интерфейсе.

+0

UIImage в первом представлении контроллера имеет как сильную, так и неатомную набор свойств. Во втором представлении контроллера создается изображение, и я использовал соответствующий метод setter для установки UIImage. При попытке отобразить изображение в UIImageView я сначала выделяю и initWithImage с свойством UIImage. Однако ничего не отображается.Где я неправ? – David

+0

Можете ли вы показать этот код? Вы хотите убедиться, что UIImageView добавлен в представление, и что вы делаете setImage: после того, как второе представление снова устанавливает первое изображение. Это можно сделать, переопределив метод setImage: accessor контроллера view. –

+0

Несомненно, я добавил то, что у меня есть, в приведенном выше надзоре. Есть идеи? – David

Смежные вопросы