[self.navigationController pushViewController:ngView animated:YES];不工作

时间:2013-05-23 09:49:13

标签: ios objective-c uinavigationcontroller xcode4.6

如果我使用

 NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self presentViewController:ngView animated:NO completion:nil];

上面的代码控制器将转到NGViewController页面。

但是如果我使用这个导航控制器

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self.navigationController pushViewController:ngView animated:YES];

控制器将在同一页面中。

任何人都可以说出问题是什么。

7 个答案:

答案 0 :(得分:2)

您应该使用此代码

NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[self presentViewController:ngView animated:NO completion:nil];

写完这一行后,你想要用推视图控制器进入不同的页面

UINavigationController *navigationController = [[UINavigationController       alloc]initWithRootViewController:ngView];

[self.navigationController pushViewController:navigationController animated:YES];

我希望你能用这段代码解决这个问题祝你好运

答案 1 :(得分:1)

您的self.navigationController可能是nil - 请通过调试查看。您的self视图控制器不在UINavigationController

之内

答案 2 :(得分:1)

现在我正在使用此代码

 NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
 [UIView beginAnimations:nil context:NULL];
 [UIView setAnimationDuration: 0.50];
 [self presentViewController:ngView animated:NO completion:nil];

这样它会产生同样的效果

答案 3 :(得分:1)

自我控制器应具有导航控制器(在故事板中)以便导航。

[self.navigationController pushViewController:nextController animated:YES];

答案 4 :(得分:0)

UINavigationControllercontroller of controllers,旨在让您push and pop controllers并管理视图的层次结构。您的navigationController媒体资源会告诉您NGViewController当前是否处于UINavigationController's层次结构中;如果不是(如本例所示),navigationController属性将返回nil

答案 5 :(得分:0)

您必须创建自己的导航控制器,然后尝试推送视图控制器,从而构建视图层次结构。 我通常会建议:

 UINavigationController *navigationController = [[UINavigationController       alloc]initWithRootViewController:firstviewController];
[self.window setRootViewController:navigationController];
navigationController.delegate = self;
navigationController.navigationBarHidden = YES;

答案 6 :(得分:-2)

你需要在你的第一个控制器中声明这个

NGViewController *ngView = [[NGViewController alloc]init];
[self.navigationController pushViewController:ngView animated:YES];