弹出视图控制器离开堆栈而没有显示导航栏? [关闭]
Posted
技术标签:
【中文标题】弹出视图控制器离开堆栈而没有显示导航栏? [关闭]【英文标题】:Pop view controller off stack without a navigation bar shown? [closed] 【发布时间】:2013-04-26 18:49:02 【问题描述】:我已经隐藏了导航栏,所以我可以在那里有一个自定义 UIToolBar,但是当我将工具栏项的 action 属性设置为弹出它的方法时,它不起作用,我认为它可能是因为我隐藏了导航栏。
这是我的代码:
[toolBarItems addObject:[[UIBarButtonItem alloc] initWithTitle:@"Articles" style:UIBarButtonItemStyleBordered target:nil action:@selector(backButtonTapped)]];
...
- (void)backButtonTapped
[self.navigationController popViewControllerAnimated:YES];
但是什么也没发生。
【问题讨论】:
隐藏导航栏是什么意思?检查并查看您的导航控制器是否为零 [self.navigationController setNavigationBarHidden:YES Animation:NO]; 不,它不是零。 hmm 可能需要查看更多代码,您在上面发布的代码是可以的。尝试 NSLogging 你的控制器堆栈并确保有一个视图可以弹出 给我这些答案:你的方法 backButtonTapped 调用了吗?你 self.navigationController.viewControllers 中是否有 viewcontrollers count > 1? 【参考方案1】:你的选择器的目标是 nil,当它应该是 self 并且你需要将 sender 参数放在你的操作方法中!
[toolBarItems addObject:[[UIBarButtonItem alloc] initWithTitle:@"Articles" style:UIBarButtonItemStyleBordered target:self action:@selector(backButtonTapped:)]];
-(void) backButtonTapped: (id) sender
//code as before here
edit 正如@sulthan 所说,sender 参数不需要!您可以像以前一样忽略它!
【讨论】:
这并没有改变任何东西。 请在popViewcontrollerAnimated:方法中添加断点,并告诉我们点击按钮时是否命中sender
参数是可选的。
@Sulthan 你能提供文档的参考吗?我没有在文档中发现对此不确定。由于我目前无法自己编译代码,我认为这是问题所在。
@DougSmith 确保它与隐藏导航栏无关!您添加的按钮(“文章”)是否出现在工具栏中?你的 viewController 中的 backButtonTapped 方法是在另一个对象的方法上吗?【参考方案2】:
我在整个视图上有一个 UITapGestureRecognizer,它拦截了 UIBarButton 上的点击。感谢this answer,我解决了这个问题,它基本上从一开始就停止了 UITapGestureRecognizer,除非它在 UIToolBar 之外。
【讨论】:
以上是关于弹出视图控制器离开堆栈而没有显示导航栏? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章