我正在編寫一個應用程序,您需要以模態方式顯示登錄屏幕,並且該應用程序有一個標籤欄。iPhone DropBox應用像實現 - 翻轉標籤欄以顯示登錄屏幕
我已經添加標籤欄直接到UIWindow。將其翻轉到一個新的視圖(登錄視圖)我已覆蓋applicationDidFinishLaunching我檢查用戶是否有登錄憑據,然後我不顯示登錄屏幕,否則(假設第一次使用或註銷的情況下)我模態地呈現登錄屏幕。我已經在應用程序內的設置選項卡中提供了註銷選項。
我正在使用[[UIApplication sharedApplication]委託]調用在用戶第一次登錄時獲取應用程序委託的實例。通過這種方式,我可以訪問屬於應用程序委託的tabBarController(與大多數情況一樣)。但是,當我嘗試從設置(未來生命週期某處)的註銷選項調用loginViewController時,相同的調用[[UIApplication sharedApplication]委託]返回給我一個委託,我無法使用任何方法I已經定義。它在運行時給我「無法識別的選擇器發送到實例」錯誤。
我需要了解究竟調用[[UIApplication sharedApplication]委託]返回的是什麼?委託對象是否在應用程序生命週期期間返回更改? OR是整個應用程序生命週期中的單例實例嗎?
其次,爲了解決這個問題,我應該將tabBar添加到一個視圖(包含在主窗口中)中,而不是直接將其添加到UIWindow中(如Tab Bar應用程序的模板所做的,似乎是標準做法) 。這種方法存在任何已知問題,或者可以這樣做。任何人都試過這個?請告訴我。
謝謝 Dev。
感謝傑西......這些事情之一是你是「腦筋急躁」的,當你第二天早上回來看它時,它的那個愚蠢的陳述[appDelegate發佈] ......感謝「過度」的好記憶公民: )...對於浪費你的時間感到抱歉,但如果它有幫助,你確信它返回了同一個單例對象,這讓我再次以不同的視角穿過調試器,當我發現它時......再者, UIWindow中的tabBarController確實感覺到了這樣做的正確方式,並且很高興它在沒有任何黑客攻擊或損害設計的情況下工作:) – Dev 2010-08-17 07:34:12