2011-06-17 70 views
0

我希望我的應用程序始終在第一次打開時啓動。我有幾個視圖控制器,當我退出我的應用程序,我再次打開它,我看到我離開的視圖控制器。也許我必須調用方法applicationWillTerminate方法。當應用程序變爲活動狀態時加載視圖控制器

我用這個代碼打開了一個新的觀點:它鏈接到按鈕時

UIViewController *control = [[SomeViewController alloc] initWithNibName:@"SomeViewController" 
                      bundle:nil]; 
UINavigationController *navControl = [[UINavigationController alloc] 
             initWithRootViewController:control]; 

[self presentModalViewController:navControl animated:NO]; 

[navControl setNavigationBarHidden:YES]; 

[control release]; 
[navControl release]; 

此代碼的偉大工程。但是,當我將該代碼放在applicationDidBecomeActive方法中時,它不起作用。

回答

2

最簡單的方法是在Info.plist中設置UIApplicationExitsOnSuspend。

雖然這確實不是預期的行爲。用戶希望看到應用程序「他們離開的地方」,特別是如果他們只是簡單地離開了應用程序(例如因爲他們接到了電話)。

您的代碼片段添加了視圖控制器,但不太可能工作,因爲您的應用程序委託不是UIViewController。它也沒有做任何關於刪除舊的視圖控制器。

編輯:如果你需要做的是顯示啓動畫面(或東西),那麼它是這樣的:

  • -applicationDidEnterBackground:,添加一個「閃屏」視圖(而不是視圖控制器)至self.window。 (iOS從-applicationDidEnterBackground:返回並在應用程序切換動畫中使用此功能;您希望這是用戶在切換回應用程序時看到的內容)
  • -applicationWillEnterForeground:中,執行所需的任何動畫並最終從窗口中刪除視圖(調用-removeFromSuperview)。

編輯2:同樣將在-applicationWillResignActive:/-applicationWillBecomeActive:工作,除非這種情況發生在睡眠/喚醒事件,你想要什麼這可能不是......

我會盡量避免使用視圖控制器,因爲試圖在視圖控制器層次結構中強制使用視圖控制器可能是有問題的(例如,您必須弄清楚使用哪個VC來呈現它,並且如果用戶需要做「正確的事情」背景你的應用程序,而VC在屏幕上,並...)

+0

對不起,你是對的我應該改變我的問題不同。是因爲我需要在用戶午餐時運行徽標動畫。 –

0

它不起作用的原因applicationDidBecomeActive是該方法只發送給應用程序委託,它不知道presentModalViewController。

我建議在你的appDelegate中實現applicationWillEnterForeground:,它應該將狀態恢復到新啓動的應用程序(相當於application:didFinishLaunchingWithOptions末尾的狀態)。

或...(編輯) 如果你只是想要一個特定的viewController運行(它仍然是加載,對吧?)...舉例來說,如果你有一個選項卡控制器,只是想要去的第一個視圖控制器的根,把下面的代碼到applicationWillEnterForeground:

UITabBarController * myTabBar = self.tabBarController; 
myTabBar.selectedIndex = 0; 
[[myTabBar.viewControllers objectAtIndex:0] popToRootViewControllerAnimated:NO]; 
+0

我必須用那種方法寫什麼代碼?對不起,我是這個新手。非常感謝幫助 –

+0

我之所以需要這樣做是因爲公司希望在人們打開應用程序時運行徽標動畫。該動畫是在我的第一個視圖控制器,這就是爲什麼我想跳轉到它的原因 –

+0

我試圖編寫應用程序:didFinishLaunchingWithOptions;在該方法中,但它沒有工作 –

0

臨時解決方法:

我在做我的應用程序崩潰applicationWillResignActive方法,它的工作原理。我的應用程序需要在啓動時運行動畫。但是,這是有效的,因爲下次應用程序運行時就像我第一次打開它一樣。

相關問題