首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >contextMenuConfigurationForItemsAtIndexPaths for UITableView?

contextMenuConfigurationForItemsAtIndexPaths for UITableView?
EN

Stack Overflow用户
提问于 2022-12-04 14:11:01
回答 1查看 19关注 0票数 0

我们知道iOS 13将ContextMenu函数添加到UITableView中,我们可以使用以下方法显示UITableViewCell的上下文菜单:

代码语言:javascript
复制
- (nullable UIContextMenuConfiguration *)tableView:(UITableView *)tableView contextMenuConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath point:(CGPoint)point

但是,如何显示多个选定行的菜单呢?比如“档案”应用程序?

从iOS 16开始,UICollectionView添加了以下内容:

代码语言:javascript
复制
- (nullable UIContextMenuConfiguration *)collectionView:(UICollectionView *)collectionView
       contextMenuConfigurationForItemsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths
                                              point:(CGPoint)point

奇怪的是,UITableView没有这个功能,苹果忘了这么做吗?:)有什么方法可以在UITableView上实现同样的功能吗?还是我漏掉了什么?

有什么方法可以为UITableView实现同样的目标吗?

EN

回答 1

Stack Overflow用户

发布于 2022-12-04 15:11:09

在tableView(_:contextMenuConfigurationForRowAtIndexPath:point:) 13和更高版本中,您可以通过实现iOS方法并返回带有所需操作的UIContextMenuConfiguration对象来显示UITableView中多个选定行的上下文菜单。下面是一个如何做到这一点的例子:

代码语言:javascript
复制
- (nullable UIContextMenuConfiguration *)tableView:(UITableView *)tableView contextMenuConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath point:(CGPoint)point {
    // create an array of selected index paths
    NSArray *selectedIndexPaths = [tableView indexPathsForSelectedRows];

    // create a UIMenu with the desired actions
    UIMenu *menu = [UIMenu menuWithTitle:@"Actions"
                                  children:@[
                                      [UIAction actionWithTitle:@"Action 1" image:nil identifier:nil handler:^(__kindof UIAction * _Nonnull action) {
                                          // handle action 1
                                      }],
                                      [UIAction actionWithTitle:@"Action 2" image:nil identifier:nil handler:^(__kindof UIAction * _Nonnull action) {
                                          // handle action 2
                                      }]
                                  ]];

    // create a UIContextMenuConfiguration with the menu and the selected index paths
    UIContextMenuConfiguration *config = [UIContextMenuConfiguration configurationWithIdentifier:nil previewProvider:nil actionProvider:^UIMenu * _Nullable(NSArray<UIMenuElement *> * _Nonnull suggestedActions) {
        return menu;
    }];

    return config;
}

在本例中,tableView(_:contextMenuConfigurationForRowAtIndexPath:point:)方法创建一个所选索引路径数组,然后使用所需的操作创建一个UIMenu,最后返回一个带有UIMenu和所选索引路径的UIContextMenuConfiguration对象。这将允许您在UITableView中显示多个选定行的上下文菜单。

在tableView(:contextMenuConfigurationForRowAt:point:),14和更高版本中,UITableView获得了一种新的方法,即UITableView,它允许您以更直接的方式显示多个选定行的上下文菜单。此方法的工作原理类似于在collectionView(:contextMenuConfigurationForItemsAtIndexPaths:point:) 16中添加的iOS方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74677396

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档