2011-12-11 55 views
1

在我的項目的主視圖控制器,應用程式的用戶點擊「開始」按鈕,我的下一個視圖添加到屏幕上:addChildViewController並刪除它

UIViewController *nextController = [[GamePlayViewController alloc] initWithNibName:@"GamePlayView" bundle:nil]; 
[self addChildViewController:nextController]; 
[self.view addSubview:nextController.view]; 

現在,當用戶要點擊回主菜單,運行的代碼是什麼?

我知道我可以從一個的viewController過渡到另一個,就像這樣:

[self transitionFromViewController:currentPageController 
         toViewController:nextController 
           duration:0 
           options:UIViewAnimationOptionTransitionCurlDown 
          animations:nil 
          completion:^(BOOL finished) { [nextController didMoveToParentViewController:self]; }]; 

但如果我只是想轉換回項目的主視圖控制器?

謝謝!

回答

1

你爲什麼要重新發明輪子?
只需使用導航控制器並按下第二個視圖控制器即可。
或者,如果它是不妥當的在你的情況下,使用導航控制器,那麼你就可以打開第二個視圖控制器爲模態的視圖,完成後關閉它...

+0

我不知道...我從來沒有用過導航控制器,我總是從一個viewController轉換到另一個。不要只有導航控制器纔會前後移動?如果我想要一個進入主菜單 - >遊戲播放 - >結果屏幕 - >返回主菜單的程序(不回到GamePlay屏幕)?這是可能的導航控制器?我只是簡單地從ResultsViewController轉換到MainMenuViewController,就像我目前正在做的那樣。 – RanLearns

+0

@ObjectiveFlash,是的,導航控制器可以做到這一點。你可以使用'pushViewController:animated:','popViewControllerAnimated','popToRootViewController'(你所要求的),'popToViewController:animated:'。使用導航控制器時,您還將通過使用自定義轉換接收「viewWillApear」,「viewWillDisapear」回調以及其他幾個您不會收到的代碼。導航控制器不包含的情況非常少,您的情況不屬於它們之一。 –

+0

感謝您的解釋 - 導航控制器是否會自動在屏幕頂部添加欄,以便用戶從一個視圖點擊「返回」到另一個視圖?我不喜歡這些自動酒吧,我​​爲這些應用程序創建了所有我自己的藝術作品,包括後退按鈕等。有沒有簡單的方法來刪除它?我將把你的答案標記爲正確的,儘管對於這個特定的應用程序,我使用了你的第二個建議,並將第二個視圖作爲模態視圖打開,因爲我在這個特定的應用程序中只有兩個視圖。 – RanLearns

1

你爲什麼不只是使用

[self presentModalViewController:currentPageController animated:YES]; 

,當你想回到使用

[self dismissModalViewControllerAnimated:YES]; 

+0

謝謝你的回答,並提供實際的代碼 - 這是我用於這個特定的應用程序 – RanLearns

+0

歡迎兄弟:) –

0

你可以做到這一點使用下面的代碼:

[self willMoveToParentViewController:nil]; 
[self.view removeFromSuperview]; 
[self removeFromParentViewController]; 

哪裏self是你view controller

適合我!