2012-02-20 45 views
0

場景:如何在返回時將數據從一個View Controller傳遞到Storyboard中的另一個?

  • 故事板用的UINavigationController作爲初始控制器。
  • MainVC(導航控制器的root vc)需要用戶在地圖上選擇一個位置。
  • MainVC推送包含MapKit映射的VC,並將其自身添加爲用戶選擇位置時MapVC發出的通知的偵聽器。
  • MapKit是一個內存豬,我們都知道。 iOS給我一個內存警告,我做所有需要做的事情,然後iOS釋放它可以釋放的所有東西,包括MainVC。
  • MapVC發出通知,但沒有人收聽。用戶選擇的位置丟失,就像雨中的淚水一樣。

鑑於此,回到MainVC時傳遞位置數據的可靠方法是什麼?我甚至想到把它寫成〜/ tmp(這是我在處理像圖像這樣的大量數據時要做的事情),但這看起來像是浪費機器。沒有一個我可以掛鉤的機制,就像導航控制器返回到前一個VC時觸發的事件一樣?就像,有了像prepareForSegue一樣的東西:但在相反的方向將是很好的。

編輯我試着去參加代表團,但看起來我的代表被髮布了。我堅持要寫〜/ tmp嗎?

+0

代表團是要走的路 - 這聽起來像你有一個問題,您的委託對象被釋放? – petert 2012-02-20 12:23:27

+0

我只能補充說,如果我在MainVC(現在是MapVC.delegate)中註釋掉[super didReceiveMemoryWarning],它不會被取消分配。儘管如此,我認爲這不符合要求。 – Morpheu5 2012-02-20 14:31:56

回答

0

見我的答案在這裏設立一個委託和委託協議的詳細解釋 - here

+0

好的,代理工作並在內存警告後保持運行。這個神祕的現在是:爲什麼我的領域和按鈕不保留它們的價值和狀態?具體來說,我有一個UITextView的一些文本被清除,一些按鈕應該突出顯示/啓用,但他們不是。 – Morpheu5 2012-02-20 16:12:45

+0

此外,我可以確認這些字段保持其正確的值和啓用/突出顯示的狀態,它們只是在MapVC彈出時才顯示。 – Morpheu5 2012-02-20 16:16:12

+0

我不明白這個新問題。我有一個建議。接受這個答案,轉換成ARC來清理你的記憶問題,並寫出一個新問題,解決你的問題。要在Xcode中將項目轉換爲ARC,請選擇「編輯」,然後「重構」,最後選擇「轉換爲ARC」。在轉換出現問題的情況下,首先使用「文件」「創建快照」快照您的項目。 – 2012-02-20 17:50:04

相關問題