[self.navigationController pushViewController:ngView animated:YES]; 无法运行

4
如果我使用 </p>
 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];

控制器将在同一页中。

有人能告诉我问题是什么吗?


1
你是否正在使用 UINavigationController?如果没有,那么 self.navigationController 将会是 nil - borrrden
是的,我没有使用UINavigationController,所以它没有出现...谢谢大家。 - Nithinbemitk
你的应用程序是否已经基于 UINavigation 进行开发?如果没有,那么将其转换为基于 Navigation 的应用程序,它就可以正常工作了。 - Dipen Panchasara
请确保您将视图控制器推入导航堆栈中。否则,self.navigationController将返回nil; - msmq
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];

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


1
自控制器应该在故事板中有导航控制器,以便进行导航。
[self.navigationController pushViewController:nextController animated:YES];

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

所以它将会给予其他同样的效果


1
希望你能稍后结束动画...(顺便说一句,这种动画方式真的很老了[早于iOS 4]) - borrrden

1

你的 self.navigationController 可能是 nil - 通过调试进行检查。你的 self 视图控制器不在一个 UINavigationController 中。


0

你需要创建自己的导航控制器,然后尝试推送视图控制器,从而构建视图层次结构。 通常我会建议这样做:

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

0

UINavigationController 是一个 控制器的控制器,它旨在允许您推送和弹出控制器并管理视图层次结构。而您的 navigationController 属性告诉您您的 NGViewController 是否当前位于 UINavigationController 的层次结构中;如果不是(如本例),则 navigationController 属性返回 nil


-2

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接