[self.navigationController pushViewController:ngView 动画:YES];不工作
Posted
技术标签:
【中文标题】[self.navigationController pushViewController:ngView 动画:YES];不工作【英文标题】:[self.navigationController pushViewController:ngView animated:YES]; not working 【发布时间】:2013-05-23 09:49:12 【问题描述】:如果我使用
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];
控制器将在同一页面中。
谁能告诉我这是什么问题。
【问题讨论】:
您使用的是UINavigationController
吗?如果不是,那么self.navigationController
将是nil
。
是的,我没有使用 UINavigationController 所以它不会来....thanx 2 all
你的应用程序是否基于UINavigation
,如果没有,则将其转换为基于导航的应用程序,然后它将工作
确保您将视图控制器推送到导航堆栈中。否则 self.navigationController 将返回 nil;
【参考方案1】:
你应该使用这个代码
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];
希望你能通过这段代码解决这个问题祝你好运
【讨论】:
【参考方案2】:您的self.navigationController
可能是nil
- 通过调试检查它。您的 self
视图控制器不在 UINavigationController
内。
【讨论】:
【参考方案3】:现在我正在使用此代码
NGViewController *ngView = [[NGViewController alloc]initWithNibName:Nil bundle:Nil];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration: 0.50];
[self presentViewController:ngView animated:NO completion:nil];
这样其他的效果也一样
【讨论】:
我希望你以后能结束动画......(P.S. 这种动画方式真的很旧 [pre ios 4])【参考方案4】:Self Controller 应该有导航控制器(在 Storyboard 中)以便导航。
[self.navigationController pushViewController:nextController animated:YES];
【讨论】:
【参考方案5】:UINavigationController
是一个controller of controllers
,它旨在允许您push and pop controllers
并管理视图的层次结构。你的navigationController
属性告诉你你的NGViewController
当前是否在UINavigationController's
层次结构中;如果不是(在本例中),navigationController
属性将返回 nil
。
【讨论】:
【参考方案6】:您必须创建自己的导航控制器,然后尝试推送视图控制器,从而构建视图层次结构。 我通常会建议这样做:
UINavigationController *navigationController = [[UINavigationController alloc]initWithRootViewController:firstviewController];
[self.window setRootViewController:navigationController];
navigationController.delegate = self;
navigationController.navigationBarHidden = YES;
【讨论】:
【参考方案7】:你需要在你的第一个控制器中声明它
NGViewController *ngView = [[NGViewController alloc]init];
[self.navigationController pushViewController:ngView animated:YES];
【讨论】:
以上是关于[self.navigationController pushViewController:ngView 动画:YES];不工作的主要内容,如果未能解决你的问题,请参考以下文章