ios - UITableView系统自带的批量删除没有选中状态?
高洛峰
高洛峰 2017-04-17 17:17:14
[iOS讨论组]

如图所示, 是UITableView系统自带的批量删除, 但是点击空心圆圈没有选中状态, 这是什么原因? 求大神帮忙解答!

详细代码如下:
1.首先要开启编辑模式

  • (IBAction)multiOperation:(id)sender {
    [self.tableView setEditing:!self.tableView.isEditing animated:YES];

}
2.在viewDidLoad方法中告诉系统允许在编辑模式进行多选操作

// 允许在编辑模式进行多选操作
self.tableView.allowsMultipleSelectionDuringEditing = YES;

3.在监听删除按钮点击方法中获得所有被选中的行,通过遍历所有的行号去出所有的选中模型,将所有选中模型从数组中移除,刷新表格

  • (IBAction)remove {
    // 获得所有被选中的行
    NSArray *indexPaths = [self.tableView indexPathsForSelectedRows];

    // 便利所有的行号
    NSMutableArray *deletedDeals = [NSMutableArray array];
    for (NSIndexPath *path in indexPaths) {

       [deletedDeals addObject:self.deals[path.row]];

    }

    // 删除模型数据
    [self.deals removeObjectsInArray:deletedDeals];

    // 刷新表格
    [self.tableView reloadData];
    }

高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(1)
迷茫

你是把cell的selectionStyle设置成None了吧。这样系统的选中效果就没了。

如果不想要系统自带的选中效果,又想要选中的圆圈效果的话,可以重写自定义cell类的setSelected:animated:方法

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
    [super setSelected:selected animated:animated];
    
    
    for (UIView *subview in self.subviews) {
        if ([subview isKindOfClass:NSClassFromString(@"UITableViewCellEditControl")]) {
            UIControl *control = (UIControl *)subview;
            [control setSelected: selected];
        }
    }
}

加入上面的代码就可以了。不过我只在iOS9上测试过,其他iOS版本不保证有效果。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号