的iOS4之前,我的應用程序的初始視圖控制器將檢查在viewWillAppear中,如果設置變量/關設定密碼,呈現模式密碼屏幕將呆在那裏,直到輸入正確的密碼或主頁按鈕被按下。使用applicationwillenterforeground的密碼屏幕
隨着iOS4的,如果我的應用程序一直在後臺,我想包含在數據中的應用是不容易接觸,如果他們要交出自己的手機給別人使用的用戶感到舒適。由於應用程序可以返回到任何屏幕(該應用程序最後一個屏幕),我想我會在本地選擇器(重複的enterPasscode方法)遍佈整個地方使用UIApplicationWillEnterForegroundNotification,每個屏幕都有正確的視圖控制器基於本地屏幕推送,但必須有更好的方法。
我在這裏可以具有輕微的概念誤解。有人可以提出另一種方法,或者推動我繼續下一步。我可以把它作爲一個共享方法,但仍然知道正確的本地視圖控制器推送?
感謝
編輯/ UPDATE:
短版:它的工作原理,但可能仍有可能是一個更好的方法(能夠理解的任何幫助)...
我創建了一個標準單用一個視圖控制器。
PasscodeView.h包含:含
UIViewController *viewController;
@property (nonatomic, retain) UIViewController *viewController;
PasscodeView.m:
@synthesize viewController;
我把這個在AppDelegate中:
-(void)applicationWillEnterForeground:(UIApplication*)application {
PasscodeView *passcodeView = [PasscodeView sharedDataManager];
UIViewController *currentController = [passcodeView viewController];
NSLog(@"%@", currentController); //testing
EnterPasscode *passcodeInput = [[EnterPasscode alloc] initWithNibName:@"Passcode" bundle:nil];
[currentController presentModalViewController:passcodeInput animated:NO];
[passcodeInput release];
}
,在我所有的viewDidLoad以下,當我進入每個屏幕時更新當前視圖控制器(只有2行,但似乎仍然存在)一個更好的方法):
PasscodeView *passcodeView = [PasscodeView sharedSingleton];
passcodeView.viewController = [[self navigationController] visibleViewController];
我希望有已經得到來自applicationWillEnterForeground當前視圖控制器的方式,但我無法找到它 - 在這裏任何幫助,還讚賞。
爲了保持一致性,我換了一個線,並增加了專線,以獲得導航欄,以匹配應用程序的其餘部分,包括標題。
UINavigationController *passcodeNavigationController = [[UINavigationController alloc] initWithRootViewController:passcodeInput];
[currentController presentModalViewController: passcodeNavigationController animated:NO];
這是我開始的地方,但不知道要爲視圖控制器放置什麼 - 我會給這個想法然後試一試。 – 2010-08-08 18:02:39
請參閱上面的編輯。 – 2010-08-08 18:23:09
我從概念上理解你正在嘗試的 - 在這裏提供一個密碼屏幕而不是在每個視圖控制器 - 看起來它應該工作,但事實並非如此。完全按照原樣複製代碼(將PasscodeInputController更改爲EnterPasscode),生成良好,沒有錯誤,沒有警告,但沒有出現。我最初並不熟悉UIWindow的rootViewController屬性,但在讀完它之後,它看起來應該可以工作 - 儘管找不到任何其他示例。我試了一些其他的東西 - 嘗試在那裏使用navcontroller,嘗試了子視圖,makeKeyAndVisible但沒有。 – 2010-08-09 03:29:25