Objective-C --- - UITableView 二 对一进行一些属性补充(梳理总结)

//当点击cell时

-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

    NSLog(@"%@",self.dataList[indexPath.section][indexPath.row]);

}

========================================

 

 

//设置编辑状态  有删除和插入二种

首先设置进入编辑状态

    self.navigationItem.rightBarButtonItem = self.editButtonItem;

 

}

-(void)setEditing:(BOOL)editing animated:(BOOL)animated{

    [super setEditing:editing animated:animated];

    [self.tableView setEditing:editing animated:animated];

}

b.在代理方法中实现所需要的功能

-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{

    if (indexPath.row % 2) {

        return UITableViewCellEditingStyleDelete;

    }else{

        return UITableViewCellEditingStyleInsert;

    }

}

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{

 

    if (editingStyle == UITableViewCellEditingStyleDelete) {

        //删除数据源

        [self.dataList[indexPath.section] removeObjectAtIndex:indexPath.row];

        //更新tableview

//        [self.tableView reloadData]; 这里没必要整个刷新

        [self.tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationLeft];        

    }else if(editingStyle == UITableViewCellEditingStyleInsert){

        [self.dataList[indexPath.section] insertObject:@"insert" atIndex:indexPath.row + 1];

                NSIndexPath *insertIndexPath = [NSIndexPath indexPathForRow:indexPath.row + 1 inSection:indexPath.section];

        [self.tableView insertRowsAtIndexPaths:@[insertIndexPath] withRowAnimation:UITableViewRowAnimationTop];   

    }

}

//修改向左划出delete的文字

-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath{

    return @"删除";

}

======================================

//移动  在编辑状态才可以进行

-(BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath{

    return YES;

}

 

-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{

    //保存原数据

    NSString *preData = self.dataList[sourceIndexPath.section][sourceIndexPath.row];

    //删除原数据

    [self.dataList[sourceIndexPath.section] removeObjectAtIndex:sourceIndexPath.row];

    

    //添加到目标位置  完成移动

    [self.dataList[destinationIndexPath.section] insertObject:preData atIndex:destinationIndexPath.row];

    //移动cell

    [self.tableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];

    NSLog(@"success");

}

=======================================

 

//-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{

//    return @"我是头";//自动设置高度为44

//}

-(NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{

    return @"我是尾";//自动设置高度为44

}

 

-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{

    return 88;

}

-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{

    static NSString *headerId = @"headerId";

    

    UITableViewHeaderFooterView *headerV = [tableView dequeueReusableHeaderFooterViewWithIdentifier:headerId];

    //和cell一样  也是复用机制

    if (!headerV) {

        headerV = [[UITableViewHeaderFooterView alloc]init];

        

    }

 

    //cell和HeaderFooterView 一样,一般自定义  很少用系统的,系统封装的有点乱,而且不是很美观,平时用得少,这里有梳理得还是很乱tintColor,textLabel,detailTextLabel,contentView

//    cell不一样的地方

//    cell.selectionStyle 被选中的风格

//    editingStyle;  编辑的风格

//    accessoryType;  右边的风格 常见的有打勾这样的

 

    headerV.textLabel.text = [NSString stringWithFormat:@"%ld",section];

    headerV.contentView.backgroundColor = [UIColor orangeColor];    

    return headerV;

}

===================================

 

//设置索引

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

{

//    UITableViewIndexSearch是放大镜样子的

    return @[UITableViewIndexSearch, @"0",@"1", @"2"];

}

//设置索引号

-(NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index{

//    当值时-1时不操作

    return index - 1;

}

=======================================

//8.0的新代理方法,设置左划cell时出现多个按钮(例如删除、置顶),实现了这个代理,自带的删除就没有了

- (NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath

{

    // 用来设置滑动时显示的更多的按钮

    UITableViewRowAction *action1 = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"置顶" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {

        //这里面实现点击后的操作

        NSLog(@"置顶");

    }];

    

    // 修改背景色

    action1.backgroundColor = [UIColor blueColor];

    

    

    UITableViewRowAction *action2 =[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"清除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {

        //这里面实现点击后的操作

        NSLog(@"清除");

    }];

    

    

    UITableViewRowAction *action3 =[UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleNormal title:@"更多" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {

        //这里面实现点击后的操作

        NSLog(@"更多");

    }];

    return @[action1, action2, action3];

}

 

结果展示

 

转载于:https://my.oschina.net/adso/blog/690755

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值