美文网首页ios11.0 问题系统适配
iOS 11 tableview新增滑动手势

iOS 11 tableview新增滑动手势

作者: 忘仙 | 来源:发表于2017-09-28 14:53 被阅读1362次

    iOS 11中tableview增加了新的代理方法

    - (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
    

    来进行滑动操作,可以长滑删除(挺好玩的),也可以轻微滑动,然后点击删除进行删除操作,与以前相同

    具体代码如下

    #import "ViewController.h"
    
    @interface ViewController ()<UITableViewDelegate, UITableViewDataSource>
    
    @property (nonatomic, strong) UITableView *tableView;
    @property (nonatomic, strong) NSMutableArray *dataArray;
    
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    
        self.view.backgroundColor = [UIColor greenColor];
        
        _dataArray = [NSMutableArray arrayWithArray:@[@"1", @"2", @"3", @"4", @"5"]];
    
        _tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
        _tableView.backgroundColor = [UIColor whiteColor];
        _tableView.dataSource = self;
        _tableView.delegate = self;
        
        self.tableView.sectionHeaderHeight = 0.1;
        self.tableView.sectionFooterHeight = 0.1;
        _tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
        [self.view addSubview:_tableView];
    }
    
    -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
        return 1;
    }
    
    -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
        
        return self.dataArray.count;
    }
    
    -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
        
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"id"];
        if (cell == nil) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"id"];
        }
        cell.textLabel.text = _dataArray[indexPath.section];
        return cell;
    }
    
    -(UISwipeActionsConfiguration *)tableView:(UITableView *)tableView trailingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath {
        
        if (@available(iOS 11.0, *)) {
            UIContextualAction *deleteAction = [UIContextualAction contextualActionWithStyle:UIContextualActionStyleDestructive title:@"取消\n收藏" handler:^(UIContextualAction * _Nonnull action, __kindof UIView * _Nonnull sourceView, void (^ _Nonnull completionHandler)(BOOL)) {            
                [self.dataArray removeObjectAtIndex:indexPath.section];
                [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section]
                              withRowAnimation:UITableViewRowAnimationFade];
                completionHandler(YES);
            }];
            //也可以设置图片
            deleteAction.backgroundColor = [UIColor redColor];
            UISwipeActionsConfiguration *config = [UISwipeActionsConfiguration configurationWithActions:@[deleteAction]];
            return config;
        } else {
            // Fallback on earlier versions
            return nil;
        }
    }
    
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    
    @end
    
    

    也可以在cell的头部添加滑动的操作代理方法如下:

    - (nullable UISwipeActionsConfiguration *)tableView:(UITableView *)tableView leadingSwipeActionsConfigurationForRowAtIndexPath:(NSIndexPath *)indexPath API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
    

    相关文章

      网友评论

        本文标题:iOS 11 tableview新增滑动手势

        本文链接:https://www.haomeiwen.com/subject/lkamextx.html