当我点击导航栏时,来自栏按钮的 ios 操作表不会关闭

Posted

技术标签:

【中文标题】当我点击导航栏时,来自栏按钮的 ios 操作表不会关闭【英文标题】:ios actionsheet from bar button not dismissing when i tap on navigation bar 【发布时间】:2012-06-17 08:47:58 【问题描述】:

我有一个从 UIBarButtonItem 创建的操作表。

当显示位于导航控制器中的选项卡栏控制器中的视图控制器时,以编程方式添加的栏按钮项

- navigation controller
     -tab bar controller
          - view controller (bar button item created in viewdidload and shown in viewwillappear)

动作表正确加载和显示,问题在于它是如何被解除的。如果我点击视图中的任何位置,但当我点击导航栏时,它会正确关闭,这意味着我可以多次点击 UIBarButtonItem 并创建和覆盖操作表。

我知道我可以做一些逻辑来查看是否正在显示操作表而不重新创建它,我还可以添加一些逻辑到 viewwilldisappear 以手动删除操作表但想知道为什么它不能开箱即用

【问题讨论】:

【参考方案1】:

我遇到了同样的问题,从 UIBarButtonItem 显示的 UIActionSheetUINavigationController 中点击后退按钮时工作表没有被关闭。

我实现了@updog 描述的解决方案

- (void)viewWillDisappear:(BOOL)animated

    [super viewWillDisappear:animated];

    if ([actionSheet isVisible]) 
        [actionSheet dismissWithClickedButtonIndex:0 animated:YES];
    

执行dismissWithClickedButtonIndex 时不会调用委托,因此索引无关紧要。

【讨论】:

【参考方案2】:

我最终在 viewWillDisappear 函数中添加了一些逻辑,以隐藏正在显示的操作表。

我还必须在条形按钮单击操作中添加一些其他代码,以便在显示操作表后点击时,不会覆盖另一个操作表。

【讨论】:

以上是关于当我点击导航栏时,来自栏按钮的 ios 操作表不会关闭的主要内容,如果未能解决你的问题,请参考以下文章

iOS 导航栏-返回按钮-自定义

在iOS 7中隐藏导航栏时,如何更改状态栏的颜色?

触摸导航栏时关闭 PopOver 屏幕

ios15在隐藏导航栏时向后半滑动会留下顶部空白空间 - SwiftUI

当我在小于 10 的 ios 版本中隐藏/显示导航栏时,应用程序在进入后台后卡住

着色 iPhone 导航栏时颜色和按钮会改变行为