2013-04-03 58 views
1

我創建了一個具有兩個viewcontroller的應用程序。該應用程序打開到標題屏幕(標題爲'標題'的普通UIViewController),第二個視圖是自定義類(標題爲「MapView」的OSViewController)。實際上,應用程序在進入後臺狀態時會暫停,因此它會在您離開的地方打開,這通常位於MapView中。加載標題ViewController當applicationDidBecomeActive:

我想知道我需要做什麼才能讓應用在標題屏幕啓動時啓動。最好是,我希望它打開到標題屏幕,如果它是無效的超過1分鐘。從我一直在讀什麼,好像我會做出applicationDidBecomeActive打電話:法在我的AppDelegate在編寫這個請我提供的代碼放在applicationDidBecomeActive:方法(如果那是把它放在正確的地方)當從非活動狀態轉換到活動狀態時,將重新打開我的應用程序到標題屏幕。我的應用程序快完成了,但我想解決這個問題,並且我沒有很多處理應用程序狀態的經驗。在此先感謝您的時間。

如果您需要更多信息,請查詢。

+0

您是否有建議的任何運氣? – daltonclaybrook 2013-04-04 22:28:14

+0

我最終走了一條不同的路線來完全避免這種情況。你的建議幫助我做出這個決定,通過避免它來解決問題。我沒有驗證你是正確的,因爲我沒有成功測試它。感謝您的時間。 – JBeesky 2013-04-14 02:23:44

回答

0

您也可以註冊一個類作爲「didBecomeActive」通知的觀察者。你應該把它放在viewDidLoad或你的類的init方法中。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(willBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; 

在這種情況下,willBecomeActive:是你在你的類時,應用程序再次變得活躍的是獲得被稱爲定義的方法。這可能是這個樣子:

- (void)willBecomeActive:(NSNotification *)notification { 
    if (self.navigationController.topViewController == self) { 
     [self.navigationController popToRootViewControllerAnimated:YES]; 
    } 
} 

你還需要在你的viewDidUnload方法添加此

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; 

編輯: 感謝@AMayes的意見。在這種情況下,我不認爲關鍵/價值觀是必要的。

+0

您應該添加的,他可以使用'popToRootViewController'呼叫,並且還必須實現' - (空)observeValueForKeyPath:(的NSString *)的keyPath ofObject:(ID)對象的變化:(NSDictionary的*)的變化範圍內:(無效*) context' – AMayes 2013-04-04 00:13:06

相關問題