2011-07-27 94 views
4

點擊自定義後退按鈕後,我必須從當前視圖控制器彈出到HomeScreenViewController,後者在主窗口上作爲燈箱添加。我用下面的代碼:UINavigation控制器推送和彈出

HomeScreenViewController *homeController = [[HomeScreenViewController alloc] 
initWithNibName:@"HomeScreenViewController" bundle:nil]; 
    [self.navigationController popToViewController:homeController animated:YES]; 
    [homeController release]; 

我得到異常崩潰:Tried to pop to a view controller that doesn't exist.

怎樣纔可以實現?實施它需要做什麼改變?

回答

8

顯然你正在創建一個HomeScreenViewController的新實例,它在導航堆棧中不存在。您將必須獲取現有實例並將其用作popToViewController:animated:方法的參數。您可以通過從viewControllers陣列獲取視圖控制器,該陣列是UINavigationController上的一個屬性。他們是爲了索引,所以如果視圖控制器是在索引1然後得到使用

UIViewController * viewController = [self.navigationController.viewControllers objectAtIndex:1]; 
[self.navigationController popToViewController:viewController animated:YES]; 

如果你想回到根視圖控制器,使用popToRootViewControllerAnimated:,而不是視圖控制器。

+0

Thaks。非常感謝。真的幫了我很多。在那個基礎上,我做了一些新的事情,這是我所需要的。謝謝 –

1

試試這個朋友

[self.navigationController popToRootViewControllerAnimated:YES/NO]; 
+0

其實這段代碼跳到了第一個索引處,這不是我的問題。我不得不跳上中級水平。關於由Deepak發佈的代碼以同樣的方式幫助我。感謝您的建議。 –

0

也不要在你的AppDelegate忘記這段代碼(.M):

navigationController = [[UINavigationController alloc] initWithRootViewController:self.viewController]; 

self.navigationController = navigationController; 
self.window.rootViewController = self.navigationController; 

[self.window makeKeyAndVisible]; 

和的AppDelegate(.h)中

@property (strong, nonatomic) UINavigationController *navigationController; 

當你在你的應用中定製很多東西的時候,它可能會成爲問題。

相關問題