2012-03-28 43 views
2

我知道我可以使用popToRootViewController如果我的項目中有navigationController但我的整個項目是基於presentViewControllers並且有一個場景,我正在導航到多個級別。如果只有一個級別,我可以通過關閉當前的視圖控制器返回到根視圖控制器,但是當我下降到多個級別時,我無法弄清楚如何導航回到根視圖控制器。有人可以在這裏指導我嗎?iOS:popToRootViewController爲presentViewControllers架構

我試圖使用下面的代碼,但我的應用程序崩潰!

- (IBAction)mainMenuButtonPressed:(id)sender { 
    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [self presentModalViewController:delegate.window.rootViewController animated:YES]; 
} 

謝謝。

回答

4

如果我理解你是正確的,那麼你正在呈現幾個模態視圖控制器,並希望回到根視圖控制器。如果這是正確的,然後下面的代碼應該爲你工作:

- (IBAction)mainMenuButtonPressed:(id)sender { 
    MyAppDelegate *delegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; 
    [delegate.window.rootViewController dismissModalViewControllerAnimated:YES]; 
} 
+0

你是對的!那很棒!它的工作,但我想知道如何解僱rootviewcontroller工作,當它不在頂部? – applefreak 2012-03-28 18:18:17

+0

這是因爲只要您關閉由根視圖控制器呈現的視圖控制器,視圖控制器就會自動關閉該視圖的所有模式視圖控制器等等。基本上這只是一個遞歸調用,我猜。 – Lukas 2012-03-28 18:23:13

+0

有趣,但我不覺得任何控制器被解僱!這是直接我得到rootviewcontroller! – applefreak 2012-03-28 18:27:43

0

斯威夫特版本

var = APP_DELEGATE = UIApplication.sharedApplication().delegate as! AppDelegate 
APP_DELEGATE.window?.rootViewController?.dismissViewControllerAnimated(true, completion: nil) 

Swift3

let APP_DELEGATE = UIApplication.shared.delegate as! AppDelegate 
      APP_DELEGATE.window?.rootViewController?.dismiss(animated: true, completion: nil)