4

如果我使用

 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];

控制器将在同一页面中。

任何人都可以告诉这是什么问题。

4

7 回答 7

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];

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

于 2014-05-21T04:47:55.817 回答
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];

这样它会产生同样的效果

于 2013-05-23T10:07:26.910 回答
1

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

于 2013-05-23T09:52:32.763 回答
1

Self Controller 应该有导航控制器(在 Storyboard 中)以便导航。

[self.navigationController pushViewController:nextController animated:YES];
于 2016-02-02T11:48:23.393 回答
0

UINavigationController是一个controller of controllers,它旨在允许您push and pop controllers管理视图的层次结构。您的navigationController属性会告诉您您NGViewController当前是否处于UINavigationController's层次结构中;如果不是(在本例中),则navigationController属性返回nil.

于 2013-05-23T09:56:46.933 回答
0

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

 UINavigationController *navigationController = [[UINavigationController       alloc]initWithRootViewController:firstviewController];
[self.window setRootViewController:navigationController];
navigationController.delegate = self;
navigationController.navigationBarHidden = YES;
于 2013-12-16T15:44:19.810 回答
-2

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

NGViewController *ngView = [[NGViewController alloc]init];
[self.navigationController pushViewController:ngView animated:YES];
于 2013-05-23T10:02:19.250 回答