2010-07-05 62 views
1

我試圖找到一條消息,我可以覆蓋,然後將更改保存到我的應用程序。當應用程序終止時,什麼消息被髮送到UIView?

在MainWindow.xib我已經放置了一個UIView並將其類(在界面生成器中)設置爲我的自定義視圖TouchDrawView。

在TouchDrawView我有一堆處理觸摸事件的代碼和2個跟蹤這些觸摸事件的數組。

我的應用程序是由AppDelegate啓動的,但它沒有提及此TouchDrawView。它只是啓動應用程序。

我想要做的是在應用程序終止時保存我的2個數組 - 我可以在TouchDrawView中執行此操作,但是我不知道當整個應用程序即將終止時,此UIView發送的消息是什麼, t在AppDelegate中執行它,因爲它沒有對2數組或自定義UIView的引用

回答

1

UIView實例不會在應用程序終止時發送任何消息。

還有另一個簡單的方法來獲取應用程序狀態更改的通知:通知。您可以註冊通過[NSNotificationCenter defaultCenter]發送的通知。

對於舊版本的iPhone OS,有一個。從iOS 4開始,您還應該聽取UIApplicationDidEnterBackgroundNotification,準備終止。

+0

感謝隊友 - 它的工作 – TheLearner 2010-07-05 09:49:46

0

簡而言之,無用的答案是應用程序終止時不會發送消息UIView

您需要考慮模型 - 視圖 - 控制器,因爲這就是Cocoa和Cocoa Touch的設計。在這三個中,如果一條消息直接發送給任何它將是控制器。在你的情況下,這將是與你的觀點對話的UIViewController

壞消息是那裏也沒有這樣的信息。

一個應用程序關閉,而不是一個單獨的屏幕/視圖。

有(至少)兩種方式來做你想做的事情。首先,您可以保存視圖控制器發佈時的狀態。 (那種摸起來我錯了。)

他們的方式,我做我的應用程序是在你的UIApplicationDelegate來監聽applicationWillTerminate消息,並遍歷視圖層次和保存每個視圖控制器的狀態。當系統啓動時,您可以做相反的事情。我在博客上發帖here

+0

是的,我也覺得這是一個混亂的方式做到這一點。我將來會開始使用控制器。 – TheLearner 2010-07-05 09:50:35

相關問題