TableviewCell在編輯模式下的多選按鈕自定義

在編輯模式下,若是咱們啓用多選模式,系統則會爲咱們配上原生的選擇按鈕。但這每每是不符合UI要求的,如此咱們便須要對按鈕進行自定義。spa

不過很惋惜,這個按鈕屬性不是暴露在外的,那咱們須要用比較暴力的方法——將它循環出來。code

clipboard.png

首先看cell的subview,咱們能夠發現有這樣一個類「UITableViewCellEditControl」。沒錯,這就是咱們要找的東西,它就是cell在進入編輯模式向右縮進後所暴露出來的界面,而它包含着的那個UIImageView天然就是系統原生的多選按鈕之所在了。咱們只要將它替換便可。blog

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:@"未選擇"];
                    }
                }
            }
        }
    }
}
相關文章
相關標籤/搜索