1

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

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

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

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

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

4

2 回答 2

2

我遇到了同样的问题,UIActionSheetUIBarButtonItemUINavigationController.

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

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];

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

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

于 2013-11-19T05:46:06.703 回答
1

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

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

于 2012-07-10T23:40:13.617 回答