2011-12-18 114 views
0

我有一個導航視圖控制器,正確推動「viewController1」。然後,從「viewController1」,調用goToApp函數來推送「appViewController」。函數goToApp被執行,但應用程序保持在相同的視圖,「viewControlller1」。如何推它?謝謝。從導航控制器推送的視圖控制器不顯示

從viewController1:

navigationViewController *theInstance = [[navigationViewController alloc] init]; 
    [theInstance goToApp]; 

在navigationViewController:

-(void)goToApp { 

    appViewController *AppsViewController = [[appViewController alloc] initWithNibName:@"appViewController" bundle:nil]; 

    [[self navController] pushViewController:AppsViewController animated:YES]; 

    [AppsViewController release]; 

} 

goToApp執行,但appViewController沒有推出。

回答

0

你不應該在viewController1中創建一個新的UINavigationController。你應該通過財產navigationController。該屬性將返回UIViewController在其堆棧上的UINavigationController(如果有的話,所以它可以爲零)。

UINavigationController * theInstance = self.navigationController; 
[theInstance goToApp]; 

參見:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIViewController_Class/Reference/Reference.html屬性navigationController。

除此之外,將指針正確命名爲它們代表的內容是一種更好的約定。我建議將theInstance重命名爲currentNavigationControllernavigationController

+0

對不起,但沒有理解。我沒有在viewController1中創建一個新的導航控制器。 viewController1調用navigationViewController(主導航控制器)中實現的一個函數。這個函數應該像推送viewController1一樣推送appViewController。 – Jaume 2011-12-18 14:01:23

+0

對不起,我誤解了你的問題。看起來你已經做出了一個複雜的構造,並帶有多個可能的錯誤。 關於'navigationViewController * theInstance',它有一個視圖,它應該推送新的'UIViewController's?我認爲我以前的答案仍然成立,因爲您創建了一個新的「UINavigationController」而不是重用它。在'viewController1'中,你得到一個新的(和其他)'UINavigationController',然後是'viewController1'。 – Roemer 2011-12-18 14:08:47

+0

工作,真的apreaciate你的幫助! – Jaume 2011-12-18 17:43:08

相關問題