【发布时间】:2012-01-07 09:42:22
【问题描述】:
我使用 Xcode Storyboards(所以没有代码)从 UIBarButtonItem 创建了一个弹出框,如下所示:
呈现弹出框效果很好。但是,当我点击使其出现的UIBarButtonItem 时,我无法让弹出框消失。
当按钮被按下时(第一次)弹出框出现。当再次按下按钮(第二次)时,相同的弹出框会出现在它的顶部,所以现在我有两个弹出框(如果我继续按下按钮,则更多)。根据iOS Human Interface Guidelines,我需要让弹出框出现在第一次点击并在第二次点击时消失:
确保一次只能在屏幕上看到一个弹出框。您不应同时显示多个弹出框(或旨在外观和行为类似于弹出框的自定义视图)。特别是,您应该避免同时显示层叠或层次结构的弹出框,其中一个弹出框从另一个弹出框出现。
当用户第二次点击UIBarButtonItem 时,如何关闭弹出框?
【问题讨论】:
-
你是如何创建转场的? segue 的源端是按钮还是视图控制器?您是否为 segue 设置了任何直通?
-
@rob 我通过 Interface builder 创建了 Segue。我会选择按钮并将 Popover Segue 拖到我想要的主视图中。上图显示了这一点。我不确定您评论中最后两个问题的意思。
-
我使用“单一视图应用程序”模板和情节提要创建了一个新项目。我将一个按钮拖到模板的视图中并拖出第二个视图控制器。我从按钮控制拖到第二个 VC 并选择了 Popover。当我运行它时,我可以触摸按钮使弹出框出现,然后当我触摸弹出框之外的任何地方(包括按钮上)时,弹出框消失。你做了什么不同的事情?
-
我同意上述评论。再次点击按钮会关闭弹出框。
-
@robmayoff 你说得对,它可以与 UIButton 一起正常工作,但可以尝试使用工具栏中的 UIBarButton 项执行相同的步骤。起初我也没有看到,所以我编辑了 RazorSharp 的问题以使其更清楚。
标签: ios objective-c uipopovercontroller uibarbuttonitem uistoryboard