首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >objc中的UIContextMenuConfiguration

objc中的UIContextMenuConfiguration
EN

Stack Overflow用户
提问于 2019-09-04 04:28:38
回答 2查看 1.1K关注 0票数 2

我想用objC实现UIContextMenuConfiguration

在swift中有很多例子,但我必须在objc中结束一个问题……

所以我在swift中找到了这样的例子

代码语言:javascript
复制
override func tableView(_ tableView: UITableView, contextMenuConfigurationForRowAt indexPath: IndexPath, point: CGPoint) -> UIContextMenuConfiguration? {
    let configuration = UIContextMenuConfiguration(identifier: nil, previewProvider: nil) { actions -> UIMenu<UIAction>? in
        let action = UIAction(__title: "Custom action", image: nil, options: []) { action in
            // Put button handler here
        }
        return UIMenu<UIAction>.create(title: "Menu", children: [action])
    }
    return configuration
}

在objc中我不能定义动作。

我只能制造错误。

这是我的示例代码...

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


    BlogPost *blogPost = [self.blogPosts objectAtIndex:indexPath.row];

    UIAction * lettura = [UIAction actionWithTitle:@"Leggi"
                                             image:nil
                                        identifier:nil
                                           handler:^(UIAction *action){[self presentSF:indexPath];}
                          ];
UIMenu * menu = [UIMenu menuWithTitle:@"" children:@[lettura]];

    UIContextMenuConfiguration * config = [UIContextMenuConfiguration configurationWithIdentifier:nil
                                                                                  previewProvider:^ UIViewController* {
                                                                                      SFSafariViewController *previewSFController = [[SFSafariViewController alloc]                     initWithURL:blogPost.url entersReaderIfAvailable:NO];
                                                                                                previewSFController.preferredControlTintColor=[UIColor blackColor];
                                                                                                previewSFController.delegate = self;
                                                                                        return previewSFController;
                                                                                  }
                                                                                   actionProvider:nil];
    return config;
}

有人能帮我吗

提前感谢您的帮助

Vanni

EN

回答 2

Stack Overflow用户

发布于 2019-09-04 05:02:20

对不起,你们这些人

我解决了..。

我只需要传递一个数组。

代码语言:javascript
复制
actionProvider:^(NSArray* suggestedAction){return menu;}
票数 4
EN

Stack Overflow用户

发布于 2021-06-16 03:26:41

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

{

代码语言:javascript
复制
UIContextMenuConfiguration* config = [UIContextMenuConfiguration configurationWithIdentifier:nil
                                                                             previewProvider:nil
                                                                              actionProvider:^UIMenu* _Nullable(NSArray<UIMenuElement*>* _Nonnull suggestedActions) {

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

    //Your Action
    [actions addObject:[UIAction actionWithTitle:@"Favoritar!" image:[UIImage systemImageNamed:@"star"] identifier:nil handler:^(__kindof UIAction* _Nonnull action) {
        [self updateFavoriteTournament:self.tournamentArray[indexPath.row][@"_id"]];
    }]];
    
    
    UIMenu* menu = [UIMenu menuWithTitle:@"" children:actions];
    return menu;

}];

return config;

}

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

https://stackoverflow.com/questions/57778350

复制
相关文章

相似问题

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