2013-05-01 75 views
0

我在故事板下發現了一個奇怪的問題;
我已經拖動了UIImageView,它傳遞給UIView內的必要幀(並且可以返回)。要做到這一點,我分類UIImageView和改變框架觸摸代表。如果我不改變當前的視圖,一切都可以。更改故事板中的視圖刪除所有視圖的位置

enter image description here

後視圖翻轉,並在相同的位置返回後,我看到的物體,就像什麼也沒有發生過:

enter image description here

我可以在內部存儲所有對象的位置,但爲什麼iOS版不要保存所有的幀更改?

回答

1

當您切換到不同的視圖並在您切換回來時重新加載視圖時,視圖可能會被釋放。當然,新視圖有新的子視圖,並且每個視圖都根據故事板或.xib文件中的數據進行定位。

iOS開發的一個基本規則是你不應該使用視圖來存儲應用程序狀態。如果需要保留視圖的位置,則應將這些位置存儲在應用程序的模型中。視圖控制器應執行-viewDidLoad方法從模型中獲取位置並相應地設置子視圖。

+1

所以,你提到的是我必須存儲當前UIView對象的所有CGpoints,例如,appdelegate屬性,並且當viewwillappear會調用時,還原它? – user170317 2013-05-01 14:12:13

+0

@ user170317最好不要直接放在應用程序委託的屬性中,而應放在應用程序數據模型的某個獨特對象中(儘管應用程序委託對模型有引用並不罕見)。你的應用程序在哪裏存儲其餘的數據?無論你存儲哪些信息,視圖控制器都需要知道如何找到它。您可以在-viewDidLoad或-viewWillAppear中設置子視圖 - 應該可以正常工作。 – Caleb 2013-05-01 14:26:25

+0

看起來比需要複雜得多。如果我移動子視圖,更好的解決方案將保持立場,不要將它們移出:)。蘋果關心爲我們做更多的編碼:)。無論如何,TNX的解釋。 – user170317 2013-05-02 05:47:09