我们知道iOS 13将ContextMenu函数添加到UITableView中,我们可以使用以下方法显示UITableViewCell的上下文菜单:
- (nullable UIContextMenuConfiguration *)tableView:(UITableView *)tableView contextMenuConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath point:(CGPoint)point但是,如何显示多个选定行的菜单呢?比如“档案”应用程序?
从iOS 16开始,UICollectionView添加了以下内容:
- (nullable UIContextMenuConfiguration *)collectionView:(UICollectionView *)collectionView
contextMenuConfigurationForItemsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths
point:(CGPoint)point奇怪的是,UITableView没有这个功能,苹果忘了这么做吗?:)有什么方法可以在UITableView上实现同样的功能吗?还是我漏掉了什么?
有什么方法可以为UITableView实现同样的目标吗?
发布于 2022-12-04 15:11:09
在tableView(_:contextMenuConfigurationForRowAtIndexPath:point:) 13和更高版本中,您可以通过实现iOS方法并返回带有所需操作的UIContextMenuConfiguration对象来显示UITableView中多个选定行的上下文菜单。下面是一个如何做到这一点的例子:
- (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方法。
https://stackoverflow.com/questions/74677396
复制相似问题