UINavigationController 没有在后退按钮上弹出视图

Posted

技术标签:

【中文标题】UINavigationController 没有在后退按钮上弹出视图【英文标题】:UINavigationController not popping view on back button 【发布时间】:2010-11-29 08:30:13 【问题描述】:

我有一个 UINavigationController。我有一个 UIViewController,我使用 pushViewController 将其推入堆栈。前一个视图控制器有一个简单的名为“取消”的 backBarButtonItem。

虽然新视图的动画效果正确,但当我点击取消时,导航栏的动画效果就像视图被弹出一样,但新视图并没有消失。我需要在某处实现委托吗?

【问题讨论】:

【参考方案1】:

试试这个,

首先创建一个UIButton,然后使用自定义视图创建一个UIBarButtonItem,将UIButton 视为UIBarButtonItem 的自定义视图。

考虑将按钮作为弹出视图控制器的目标事件。

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];button.frame = CGRectMake(0, 0, 35, 35);[button setImage:[UIImage imageNamed:@"dots.png"] forState:UIControlStateNormal];[button addTarget:self action:@selector(backBarButton:) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *backBarButton = [[UIBarButtonItem alloc] initWithCustomView:button];

self.navigationItem.leftBarButtonItem = backBarButton;

- (void)backBarButton:(id)sender NSLog(@"%s", __FUNCTION__);self.navigationController.navigationBarHidden = YES;[self.navigationController popViewControllerAnimated:YES];

【讨论】:

我认为这可能是一个更简单的答案。只需添加 [self.navigationController popViewControllerAnimated:YES];调用按钮单击事件将解决问题。

以上是关于UINavigationController 没有在后退按钮上弹出视图的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationController 没有导航栏?

如果 UINavigationController 在第一个故事板中,有没有办法在第二个故事板中显示 UINavigationController?

UIViewController 呈现 UINavigationController - 没有导航栏?

UINavigationController 没有推送/显示视图

UINavigationController 没有正确推送

TableView 没有响应 UINavigationController 中的“编辑”按钮