我有一个从UIBarButtonItem创建的动作表。
当显示在导航控制器中的标签栏控制器中的视图控制器显示时,以编程方式添加条形按钮项目
- navigation controller
-tab bar controller
- view controller (bar button item created in viewdidload and shown in viewwillappear)
动作表正确加载和显示,问题与它如何被解除有关。如果我点击视图中的任何位置而不是当我点击导航栏时它会正确解散,这意味着我可以多次点击UIBarButtonItem并创建和覆盖动作表。
我知道我可以做一些逻辑来查看是否正在显示动作表并且不重新创建它,我还可以添加一些逻辑来查看将会出现以手动删除动作表但是想知道为什么它没有开箱即用< / p>
答案 0 :(得分:2)
我在UIActionSheet
显示UIBarButtonItem
时出现同样的问题,点击UINavigationController
中的后退按钮时,工作表未被解除。
我实现了@updog
描述的解决方案- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
if ([actionSheet isVisible]) {
[actionSheet dismissWithClickedButtonIndex:0 animated:YES];
}
}
执行dismissWithClickedButtonIndex
时不会调用委托,因此索引无关紧要。
答案 1 :(得分:1)
我最终在viewWillDisappear函数中添加了一些逻辑,以隐藏动作表(如果它正在显示)。
我还必须在条形按钮单击操作中添加一些其他代码,这样如果在显示动作表后点击,则不会覆盖另一个动作表。