2016-05-16 83 views
0

我有兩個視圖控制器:LevelSelectViewController和GameViewController。pushViewController不是根視圖控制器

既不是我所做的應用程序的根視圖控制器(根視圖控制器被稱爲MainViewController)。

如何使用導航方法pushViewController:animated:將LevelSelectViewController轉換爲GameViewController?

在我LevelSelectViewController,你點擊一個按鈕,下面的操作方法進行:

- (IBAction)buttonPressed:(id)sender { 
     // the pushViewController:animated: method hopefully can be used 
     // other code 
    } 
+0

你是怎麼顯示'LevelSelectViewController'的? – rmaddy

+0

presentViewController ...這就是我一直在瀏覽我的應用程序中的所有按鈕。如果我從AppDelegate建立根視圖控制器作爲導航控制器,我能否將其他子視圖控制器用作導航控制器? – Frank

回答

0

如何使用導航方法pushViewController:animated:將LevelSelectViewController轉換爲GameViewController?

術語「根視圖控制器」可以是有點混亂,因爲UIWindow具有rootViewController屬性,UINavigationController具有initWithRootViewController參數。如果您致電-pushViewController:animated:,則必須在視圖控制器圖表中包含導航控制器,因爲該方法屬於UINavigationController。如果您LevelSelectViewController實例導航堆棧的一部分,你可以這樣做:

- (IBAction)buttonPressed:(id)sender { 
    // create a game controller 
    GameViewController *gameController = [[GameViewController alloc] initWithNibName:nil bundle:nil]; 

    // push it 
    [self.navigationController pushViewController:gameController animated:YES]; 

    // other code 
} 

更典型的事,這些天,雖然是把所有的視圖控制器在故事板和簡單的按鈕連接到推送過渡。

+0

我不知道如果你在App Delegate中將你的根視圖控制器設置爲一個導航控制器,該視圖控制器的其他子項目也將能夠享受相同的功能(無需重新定義其他導航控制器實例) .....謝謝! – Frank

0

如果你使用故事板剛剛創建SEGUE。如果你沒有傳遞任何信息,你可以通過控制從一個視圖控制器拖到另一個視圖控制器來推送它。無論它是否是根視圖控制器都沒關係。

如果要傳遞數據,請在視圖控制器上創建故事板上的segue,而不是索引路徑或按鈕等,並使用與故事板上的segue完全相同的標識符在視圖控制器中調用prepareForSegueMethod。

相關問題