Как реализовать смахиваемую ячейку NSTableView?

Простой пример для NSTableViewRowAction? Прокрутите влево / вправо, чтобы удалить или другое действие.

- (NSArray<NSTableViewRowAction *> *)tableView:(NSTableView *)tableView rowActionsForRow:(NSInteger)row edge:(NSTableRowActionEdge)edge

1 ответ

Решение

Вы просто должны реализовать NSTableViewDelegate метод, который возвращает действие (я), которое инкапсулирует стиль, заголовок и код обработчика для действия строки вашей таблицы:

- (NSArray<NSTableViewRowAction *> *)tableView:(NSTableView *)tableView rowActionsForRow:(NSInteger)row edge:(NSTableRowActionEdge)edge
{
    NSTableViewRowAction *action = [NSTableViewRowAction rowActionWithStyle:NSTableViewRowActionStyleDestructive title:@"Delete" handler:^(NSTableViewRowAction * _Nonnull action, NSInteger row) {
        // TODO: You code to delete from your model here.
        NSLog(@"Delete");
    }];
    return @[action];
}

Обратите внимание, что возвращаемое значение является массивом, поэтому вы можете возвращать более одного действия на строку. Если вы хотите вернуть разные действия для каждого направления пролистывания, вы можете сделать это, проверив edge параметр, который передается в метод делегата.

Другие вопросы по тегам