TableviewCell在编辑模式下的多选按钮自定义

news/2024/8/26 16:49:38 标签: ui

在编辑模式下,如果我们启用多选模式,系统则会为我们配上原生的选择按钮。但这往往是不符合UI要求的,如此我们便需要对按钮进行自定义。

不过很可惜,这个按钮属性不是暴露在外的,那我们需要用比较暴力的方法——将它循环出来。

clipboard.png

首先看cell的subview,我们可以发现有这样一个类“UITableViewCellEditControl”。没错,这就是我们要找的东西,它就是cell在进入编辑模式向右缩进后所暴露出来的界面,而它包含着的那个UIImageView自然就是系统原生的多选按钮之所在了。我们只要将它替换即可。

here is the code,将其copy入cell文件中即可:


- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{   
//重写此方法,作用为当进入编辑模式时候运行customMultipleChioce方法
    [super setEditing:editing animated:animated];
    if (editing) {
        [self customMultipleChioce];
    }
}

-(void)layoutSubviews
{   
//重写此方法,作用为当cell重新绘制的时候运行customMultipleChioce方法
    [self customMultipleChioce];
    [super layoutSubviews];
}

-(void)customMultipleChioce{
    for (UIControl *control in self.subviews){  
    //循环cell的subview
        if ([control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]){   
        //找出UITableViewCellEditControl
            for (UIView *view in control.subviews)
            {
                if ([view isKindOfClass: [UIImageView class]]) {   
                //在UITableViewCellEditControl中找到imageView
                    UIImageView *img=(UIImageView *)view;
                    //这样便可以更改按钮的坐标
                    img.frame = CGRectMake(20, img.frame.origin.y, img.frame.size.width, img.frame.size.height);
                    //更改按钮图片
                    if (self.selected) {
                        img.image=[UIImage imageNamed:@"已选择"];
                    }else
                    {
                        img.image=[UIImage imageNamed:@"未选择"];
                    }
                }
            }
        }
    }
}

http://www.niftyadmin.cn/n/963419.html

相关文章

委托与事件以及应用

因为最近再带两个实习的朋友~ 他们在理解委托这块 不明白能用来做什么 对这块理解的不好 更不用说委托扩展来的 拉姆达表达式 事件等了~ 但是这些很重要 在MVC EF4.1 里 都会有很多拉姆达表达式的影子 在做组件开发 用户控件开发 事件的运用 一定也是少不了的 稍微深入点儿…

LabVIEW开发发电厂合规性测试系统

LabVIEW开发发电厂合规性测试系统 电厂控制器框架完全基于LabVIEW平台。能够开发不同的通信协议,必要的控制回路,以及它们与第三方的集成。此外,利用cRIO平台的可靠性,能够处理与电力公司的相互通信,提供了冗余网关&a…

服务器创建文件系统,使用linux的mkntfs命令创建 NTFS 文件系统

使用linux的mkntfs命令创建 NTFS 文件系统发布时间:2020-07-22 10:47:39来源:亿速云阅读:63作者:清晨栏目:服务器这篇文章主要介绍使用linux的mkntfs命令创建 NTFS 文件系统,文中介绍的非常详细&#xff0c…

LabVIEW在同一表中同时显示十六进制字符和普通字符

LabVIEW在同一表中同时显示十六进制字符和普通字符 如何在同一个表中同时显示十六进制字符串和普通字符串。如果有来自十六进制显示字符串控件和普通显示字符串控件的输入,并且需要在表中显示它们,可以参考下面的例子。在此示例中,可以更改连…

重温Petshop 谈谈对三层架构的理解--兼发布一个通用的数据访问控件(oracle免装客户端)

编写这个组件的需求灵感来自于看了某个产品(企业应用系统)研发项目的源码,该产品为了同时支持sql server 和oracle, 照搬了微软的 petshop的代码作为系统架构,petshop相信很多.net程序员都非常熟悉了,里面…

服务器电源线的型号,服务器电源线接口类型

服务器电源线接口类型 内容精选换一换查询Job的执行状态。对于创建裸金属服务器、挂卸卷等异步API,命令下发后,会返回“job_id”,通过“job_id”可以查询任务的执行状态。GET /v1/{project_id}/jobs/{job_id}参数说明请参见表1。请求参数无无…

LabVIEW查找n个元素数组中的质数

LabVIEW查找n个元素数组中的质数 需要查找n个元素中所有的质数时,可以参照如下的方法。 ​ 编辑 添加图片注释,不超过 140 字(可选) ​ LabVIEW、LabVIEW开发、LabVIEW编程、LabVIEW程序 上文中提到的例子和资料&#xff0c…

各类服务器MySQL性能,MySQL之服务器性能剖析

关于mysql服务器性能,可能需要关注的点会比较多,如:如何确认服务器是否达到了性能最佳的状态,找出某条语句为什么执行不够快,以及诊断被用户描述成“停顿“,“堆积“或者“卡死“的某些间歇性疑难故障。这看起来很不简…