2010-09-02 26 views
10

我正在嘗試學習iPhone的編程,並且我一直看到這些文件,我不確定每個文件和這些文件的內容在爲iPhone構建的程序的執行過程中提及的內容。我正在嘗試關注網上提供的教程和技巧,但是沒有任何一個是通過點比較或類似的方式。如果你們中的任何人能列出幾個基本的區別,比如每個文件被引用的時間以及理想地應該進入每個文件等等,那將是非常好的。感謝您的時間已經。RootViewController,AppDelegate和我可能創建的View Controller類之間有什麼區別?

回答

47

通常,代表可以被認爲是事件處理程序。因此,AppDelegate是整個應用程序的主要事件處理程序。它告訴應用何時啓動,什麼時候它會退出,什麼時候發送推送通知,應用何時進入後臺等等。其中一個事件 - applicationDidFinishLaunching - 通常負責創建應用的窗口並添加視圖到那個窗口。

在大多數應用程序中,添加到窗口的視圖實際上由UIViewController控制。每個UIViewController負責管理一個主視圖及其所有子視圖的外觀。例如,UITableViewController負責管理插入到該UITableView中的UITableView(主視圖)和所有UITableViewCells(子視圖)。 UIViewController通常充當其負責的視圖的委託(事件處理程序)。當用戶點擊表格視圖單元格時,將調用UITableViewController中的方法。當用戶滑動刪除一個單獨的方法時被調用。

通用UIViewController提供了相同的基本功能,但對於自定義視圖。例如,UIViewController可能負責顯示幾個文本視圖和一個按鈕。 UIViewController將創建它的主視圖,文本視圖和按鈕視圖。文本視圖和按鈕視圖將作爲子視圖添加到視圖控制器的主視圖中。 UIViewController將自己註冊爲文本視圖中事件的委託(例如,當用戶在文本視圖中完成編輯文本時的學習)。它還會註冊一個方法來處理源自按鈕的按鈕。當任何這些註冊事件發生時,UIViewController上的方法被調用,允許您採取任何需要的操作。

rootViewController是與導航控制器一起使用的特定類型的視圖控制器。如果你想要一個具有典型的iOS導航視圖層次結構的應用程序,你的AppDelegate通常會在應用程序的窗口中添加一個UINavigationController。該UINavigationController沒有實際的內容顯示是無用的。這是rootViewController進場的地方。您有責任提供視圖控制器(如上面描述的視圖控制器)作爲存儲在UINavigationController的視圖堆棧中的第一個視圖。該視圖將在應用程序啓動時隨時顯示,並隨時從UINavigationController的堆棧中彈出後續ViewController。

囉嗦我意識到 - 但希望它有幫助。

+0

完全有幫助。謝謝。我還有一個問題,如果它不要求太多,如果你可以看看它會很好:http://stackoverflow.com/questions/3651265/sqlite3-step-keeps-returning-sqlite-誤用此查詢任何指針。無論如何,感謝這個答案。 – kumar 2010-09-06 12:03:08

+1

關於AppDelegate,UIWindow,UIViewController,主視圖,子視圖等之間的關係的真棒解釋仍然在2012年底有效。非常感謝 – Philip007 2012-11-03 07:38:28

+0

感謝@Peter,絕對是每種對象角色最有用和最簡潔的解釋之一。謝謝。 – 2016-09-18 17:01:57

相關問題