UINavigationController 没有正确推送
Posted
技术标签:
【中文标题】UINavigationController 没有正确推送【英文标题】:UINavigationController not pushing correctly 【发布时间】:2013-04-27 17:47:22 【问题描述】:我正在尝试以编程方式导航一些视图控制器。我已经在头文件中添加了 UINavigationControllerDelegate ......但是当我点击按钮时视图没有推出......谁能告诉我做错了什么???
-(void)nextPage
NSLog(@"1234");
infoViewController* info = [[infoViewController alloc] init];
[self.navigationController pushViewController:info animated:YES];
info = nil;
- (void)viewDidLoad
[super viewDidLoad];
self.navigationController.delegate = self;
startFutureView = [[UIView alloc] initWithFrame:CGRectMake(160, 0, 320, 548)];
startFutureView.backgroundColor = [UIColor redColor];
[self.view addSubview:startFutureView];
startPastView = [[UIView alloc] initWithFrame:CGRectMake(-160, 0, 320, 548)];
startPastView.backgroundColor = [UIColor blueColor];
[self.view addSubview:startPastView];
startInfoBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
startInfoBtn.frame = CGRectMake(80, 137, 180, 180);
[startInfoBtn addTarget:self action:@selector(nextPage) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:startInfoBtn];
// Do any additional setup after loading the view, typically from a nib.
【问题讨论】:
更改 nslog 以记录 self.navigationController。是零吗? 仅仅将 navcontrollerdelegate 添加到头文件是不够的。您是否创建了 navigationController 的实例?它是否分配给窗口的 rootViewController?如果您尝试推送的 viewController 不是 UINavigationController 的 rootviewcontroller,则不会发生任何事情。添加更多关于 AppDelegate 和 ViewController 的代码会有所帮助 【参考方案1】:无需遵循UINavigationControllerDelegate
即可推送视图控制器。我猜你的 navigationController 是零。
原因是您使用的是普通视图控制器,但您需要做的是创建视图控制器,然后将其包装在导航控制器中。例如,假设您现在以模态方式呈现 viewController:
UIViewController *viewController = [[UIViewController alloc] init];
[self presentViewController:viewController animated:YES completion:nil];
这样做意味着 viewController 没有导航控制器,所以你需要这样做:
UIViewController *viewController = [[UIViewController alloc] init];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
[self presentViewController:navigationController animated:YES completion:nil];
【讨论】:
以上是关于UINavigationController 没有正确推送的主要内容,如果未能解决你的问题,请参考以下文章
如果 UINavigationController 在第一个故事板中,有没有办法在第二个故事板中显示 UINavigationController?
UIViewController 呈现 UINavigationController - 没有导航栏?