最近有列表多選刪除的需求猫牡,以前一直是自己實(shí)現(xiàn)這種效果胡诗,這次該用一下系統(tǒng)自帶的,也算是狠狠的踩了一把坑。記錄一下煌恢,提醒自己骇陈,也希望能幫助偶然來到的朋友。
1瑰抵、一般只需要兩句話就能進(jìn)入TableView的編輯模式下的多選模式
self.tableView.allowsMultipleSelectionDuringEditing = YES;
[self.tableView setEditing:YES animated:YES];
這樣就進(jìn)入了多選模式了你雌,但是一定要注意,如果是自定義的cell的話二汛,一定要在cell的實(shí)現(xiàn)文件里面加上這句話婿崭,很坑,坑了半天习贫。逛球。。
self.selectionStyle = UITableViewCellSelectionStyleDefault;
之后選中的cell背景會(huì)變成默認(rèn)的藍(lán)色苫昌,修改方法:在- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath方法中添加
cell.selectedBackgroundView = [[UIView alloc] initWithFrame:cell.frame];
cell.selectedBackgroundView.backgroundColor = [UIColor clearColor];
2、一般的需求都會(huì)定制前面對(duì)勾的樣式幸海,同樣的也在這記錄一下祟身。在cell的實(shí)現(xiàn)文件里面重寫兩個(gè)方法:
-(void)layoutSubviews //替換選中和未選中圖片
{
for (UIControl *control in self.subviews){
if ([control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]){
for (UIView *v in control.subviews)
{
if ([v isKindOfClass: [UIImageView class]]) {
UIImageView *img=(UIImageView *)v;
if (self.selected) {
img.image=[UIImage imageNamed:@"loginclickboxbg2.png"];
}else
{
img.image=[UIImage imageNamed:@"loginclickboxbg1.png"];
}
}
}
}
}
[super layoutSubviews];
}
//適配第一次圖片為空的情況
- (void)setEditing:(BOOL)editing animated:(BOOL)animated
{
[super setEditing:editing animated:animated];
for (UIControl *control in self.subviews){
if ([control isMemberOfClass:NSClassFromString(@"UITableViewCellEditControl")]){
for (UIView *v in control.subviews)
{
if ([v isKindOfClass: [UIImageView class]]) {
UIImageView *img=(UIImageView *)v;
if (!self.selected) {
img.image=[UIImage imageNamed:@"loginclickboxbg1.png"];
}
}
}
}
}
}