2011-11-16 82 views
0

我有一個應用程序,我有一個UIView內顯示的用戶縮放和移動的圖像視圖,我想傳遞這個完全相同的圖像到接下來被推入導航堆棧的UIViewController。做這件事的最好方法是什麼?我是否做過某種深度複製?傳遞一個UIView到下一個UIViewController被推入導航堆棧

+0

你想傳遞實際視圖還是副本?如果後者爲什麼不傳遞所需的數據並讓下一個視圖控制器創建它自己的視圖? – Caleb

+0

我只想通過相同的確切的事情。我只是在傳遞參考的過程中遇到了麻煩,因爲它會與原始圖像視圖有不同的超視圖。 @caleb –

回答

2
controller.imageView = imageView; 

這裏沒有太多特別的地方。您需要做的唯一事情就是將視圖添加到視圖層次結構中。視圖只能有一個超級視圖,因此當您將其添加到新視圖層次結構中時,視圖會自動從舊視圖層次結構中移除。唯一棘手的是當你彈出備份堆棧時。你是否期望視圖在舊視圖控制器中仍然可用? (它不會)

一般來說,我傾向於推薦傳遞參數而不是實際視圖(即圖像及其轉換)。這消除了堆棧上或下的任何問題,但無論哪種方式都可以工作。

+0

是的,看到的就是這樣,當我彈出時,我仍然會像原來的UIImageView一樣。 –

0

將視圖引用到下一個控制器,並保留它。
你可能會遇到一些問題來處理它的界限或框架,但是如果你只是想要相同的話,那應該沒問題。

在新控制器中,獲取傳遞的視圖並將其添加爲主視圖的子視圖。最後不要忘記將它從超級視圖中移除,並在返回到前一個控制器之前釋放它。

相關問題