如何呈现下拉菜单?

Posted

技术标签:

【中文标题】如何呈现下拉菜单?【英文标题】:How do I present a pull-down menu? 【发布时间】:2021-10-22 19:11:16 【问题描述】:

我希望添加一个下拉菜单,但我不知道从哪里开始。 Apple 的 website 引导我使用 UIMenu,但我不知道它是如何工作的。

我知道如何制作 UIMenu:

NSMutableArray* actions = [[NSMutableArray alloc] init];

[actions addObject:[UIAction actionWithTitle:@"Edit"
                                       image:nil
                                  identifier:nil
                                     handler:^(__kindof UIAction* _Nonnull action) 
    
    // ...
]];

UIMenu* menu =
[UIMenu menuWithTitle:@""
             children:actions];

如何将它附加到 UIButton?

【问题讨论】:

“我找不到菜单生成器”...developer.apple.com/documentation/uikit/… 您是否阅读了我链接到您的页面?它直接回答了这两个问题,就在页面上。 但这不是系统菜单。这是一个上下文菜单。你不会为此使用构建器。 您是否希望在按下视图时显示此菜单?然后你给那个视图一个 UIContextMenuInteraction。就像在您指向的教程中一样。您没有提供关于希望您的菜单如何出现的信息,因此无法提供更多信息。 非常混乱。现在你已经有了一些代码,毫无疑问。此时的问题是什么?这应该是答案吗?然后不要把它放在问题中,把它放在答案中。 【参考方案1】:

因此,在对您的问题进行了几次彻底的重写之后,您似乎想要一个从按钮出现的菜单。嗯,一个 UIButton 有一个 menu 属性,你分配一个 UIMenu 给它。完成。

https://developer.apple.com/documentation/uikit/uibutton/3601189-menu?language=objc

如果您还希望菜单显示为对简单点击而不是长按的响应,那么还将按钮的 showsMenuAsPrimaryAction 属性设置为 YES。

https://developer.apple.com/documentation/uikit/uicontrol/3601223-showsmenuasprimaryaction?language=objc

(UIBarButtonItem 具有类似的属性,以防您想让菜单以这种方式显示。)

【讨论】:

解决方案不适合我

以上是关于如何呈现下拉菜单?的主要内容,如果未能解决你的问题,请参考以下文章

如何制作一个 React 下拉菜单来呈现用户点击的数组并显示“这里没有找到!”如果数组为空?

select2 rails 下拉菜单无法正确呈现

反应选择下拉菜单未在获取时更新

如何在handsontable上过滤时仅在下拉菜单上显示不包含HTML内容的文本?

下拉菜单显示不正确

如何根据另一个下拉菜单值禁用下拉菜单