2011-12-18 128 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

相关问题