2014-09-01 68 views
0

了大量的研究後,因此,如果最終發現,讓我改變到另一種觀點認爲沒有給我任何錯誤代碼:添加動畫視圖改變

UIViewController * vc = [self.storyboard instantiateViewControllerWithIdentifier:@"gameOverPage"]; 
[[[[UIApplication sharedApplication] delegate] window] setRootViewController:vc]; 

這段代碼的唯一的問題是,有沒有動畫。如果可能的話,我想以某種方式添加交叉溶解動畫。

另一個主要問題是它顯示了兩次(有時三次)的視圖。因此,它進入第二個視圖,然後不到一秒鐘,它再次顯示頁面。我知道這是因爲iAd重新加載,當我按下一個按鈕轉到另一個頁面時,它會被第二個頁面再次中斷。

回答

0

要將視圖更改爲另一個(導航),您不需要setRootViewController:始終將其設置爲根視圖控制器。

可以使用UINavigationController並設置UIViewController作爲根,則改變視圖使用導航控制器的pushViewController:方法,像

//Pre condition - already a viewController is root view controller of navigation controller. 
UIViewController * vc = [self.storyboard instantiateViewControllerWithIdentifier:@"gameOverPage"]; 
[self.navigationController pushViewController:vc animted:YES]; 

另一種方式是,

[self presentViewController:vc animated:YES completion:nil]; 

更多presentViewControllerUINavigationController

+0

'[self.navigationController pushViewController:vc animted:YES];'不做任何事情''self p resentViewController:vc animated:YES completion:nil];'帶此錯誤發送垃圾郵件:'警告:嘗試在上呈現,其視圖不在窗口層級! – Andrew 2014-09-01 05:57:23

+0

從您撥打的電話'presentViewController:vc'?從'viewDidLoad'? – Akhilrajtr 2014-09-01 06:26:37

+0

不,我是在玩家輸掉比賽時打電話給他的。順便說一下,我看到很多人在viewDidLoad中使用presentViewController的帖子。爲什麼當您剛剛加載當前視圖時加載新視圖?我無法找出一個很好的理由。 – Andrew 2014-09-01 06:31:49