2013-04-08 90 views
0

在我的第一個視圖控制器中,我有一個在實現文件中合成的UIImage屬性。在推送的第二個視圖控制器中,我在那裏創建一個UIImage對象,同時將它設置爲來自第一個視圖控制器的UIImage屬性。最後,我解僱了第二個視圖控制器。但是,視圖控制器被解散後,圖像似乎並未保存。我的理解是,因爲UIImage是一個指針,數據傳遞是通過引用,並且由於控制器被解僱,UIImage也是如此。這是否正確,是否有更好的方法來完成這項任務?爲了您的參考,我正在使用ARC。在ViewControllers之間傳遞UIImage

在第一視圖控制器(firstVC)

@property (strong, nonatomic) UIImage *image; 

在第二視圖控制器,

[firstVC setImage:self.ivarUIImageView.image]; 

其中ivarUIImageVIew定義爲:

@property (strong, nonatomic) IBOutlet UIImageView *ivarUIImageView; 

現在讓我們在第三說視圖控制器,我在viewDidLoad方法中:

imgView = [[UIImageView alloc] initWithImage:firstVC.image]; 

,其中作爲imgView定義:

@property (strong, nonatomic) IBOutlet UIImageView *imgView; 
+0

在你的第三個VC中,你如何定義firstVC?如果你記錄第一個VC(在第三個VC的viewDidLoad中),它是否爲零? – rdelmar 2013-04-08 23:14:45

+0

如果你只是想處理相同的圖像,爲什麼不把它放在單例類(例如AppDelegate)? – Mehdi 2013-04-08 23:24:10

+0

你在這裏做什麼真的不清楚。在第二個視圖控制器中,您在firstVC上調用setImage - 什麼是firstVC?指向第一個視圖控制器的指針?圖像視圖?在第三個視圖控制器中,你說你有一個IBOutlet imgView,但是然後你分配init - 如果它是IB中圖像視圖的出口,你不想這樣做。 – rdelmar 2013-04-08 23:36:51

回答

1

你要確保該UIImage由第一視圖控制器保留,通過使財產strong。此外,如果正在將其顯示在UIImageView中,則必須將UIImageView的image設置爲新圖像才能看到UI中反映的更改。

+0

第一個視圖控制器中的UIImage具有強大的和非原子的財產集。在第二個視圖控制器中創建一個圖像,並使用適當的setter方法來設置UIImage。當試圖在UIImageView中顯示圖像時,我首先使用UIImage屬性分配和initWithImage。但是沒有顯示。我哪裏做錯了? – David 2013-04-08 22:41:38

+0

你可以顯示該代碼嗎?你想確保UIImageView被添加到視圖中,並且你要執行setImage:在第二個視圖重新設置第一個圖像之後。這可以通過覆蓋視圖控制器的setImage:accessor方法來完成。 – 2013-04-08 22:44:29

+0

當然,我在上面添加了我在編輯中的內容。有任何想法嗎? – David 2013-04-08 22:59:08

相關問題