iOS-UITableView

-(void)dealSearch

{

    [_searchArray removeAllObjects];

    

    for (NSMutableArray *subArray in _dataArray) {

        for (DeleteModel *model in subArray) {

            if([model.data rangeOfString:_searchBar.text].location != NSNotFound)

            {

                [_searchArray addObject:model];

            }

        }

    }

}



- (void)configSearch

{

    CGSize size = [UIScreen mainScreen].bounds.size;

    _searchBar = [[UISearchBar alloc]initWithFrame:CGRectMake(0, 0, size.width, 44)];

    _searchBar.placeholder = @"请搜索";

    _table.tableHeaderView = _searchBar;//加到头部.

    

    _searchArray = [[NSMutableArray alloc]init];

    _sdc = [[UISearchDisplayController alloc]initWithSearchBar:_searchBar contentsController:self];

    

    _sdc.searchResultsDataSource = self;

}



- (void)creatButton

{

    UIButton *button =[UIButton buttonWithType:UIButtonTypeSystem];

    button.frame = CGRectMake(0, 0, 40, 20);

    [button setTitle:@"编辑" forState: UIControlStateNormal];

    [button addTarget:self action:@selector(editing:) forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *leftItem = [[UIBarButtonItem alloc]initWithCustomView:button];

    self.navigationItem.leftBarButtonItem = leftItem;

    

}



- (void)editing:(UIButton *)buton

{

    [buton setTitle:@"完成" forState:UIControlStateNormal];

    _table.editing = YES;

    [buton addTarget:self action:@selector(edit:) forControlEvents:UIControlEventTouchUpInside];

}



- (void)edit:(UIButton *)bu

{

    [bu setTitle:@"编辑" forState:UIControlStateNormal];

    _table.editing = NO;

    [bu addTarget:self action:@selector(editing:) forControlEvents:UIControlEventTouchUpInside];

}



#pragma mark - 添加数据



-(void)loadData

{

    _dataArray = [[NSMutableArray alloc] init];

    //生成数据

    //如果是分组显示数据, 一般数据源数组中每个又是数组, 每个数据包含了数据

    for (int i='A'; i<='Z'; i++) {

        NSMutableArray *subArray = [[NSMutableArray alloc] init];

        for (int j=0; j<10; j++) {

            DeleteModel *model = [[DeleteModel alloc]init];

            model.data = [NSString stringWithFormat:@"第%c组 第%d行数据",i,j];

            model.isDelete = NO;

            [subArray addObject:model];

        }

        [_dataArray addObject:subArray];

    }

    _arrayM = [[NSMutableArray alloc]init];

    for(int i = 'A';i <= 'Z';i++)

    {

        [_arrayM addObject:[NSString stringWithFormat:@"%c",i]];

    }

}



- (void)creatTable

{

    _table = [[UITableView alloc]initWithFrame:self.view.bounds style: UITableViewStylePlain];

    

    _table.delegate = self;

    _table.dataSource = self;
    [self.view addSubview:_table];

    _table.separatorColor = [UIColor redColor];

    _table.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);

    _table.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched;

    [_table registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"];

}



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

{

    // 取消点击后的cell灰色的效果

    [tableView deselectRowAtIndexPath:indexPath animated:NO];;

}





- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    NSArray *array;

    if(tableView != _table)

    {

        return _searchArray.count;

    }

    else

    {

        array = _dataArray[section];

    }

    return array.count;

}



- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    if(tableView != _table)

    {

        [self dealSearch];

        return 1;

    }

    return _dataArray.count;

}



#pragma mark - 设置组头



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

{

    if(tableView != _table)

    {

        return @"搜索结果";

    }

   

    return _arrayM[section];

}



#pragma mark - 添加/删除单元格



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

{

    return UITableViewCellEditingStyleInsert|UITableViewCellEditingStyleDelete;

}





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

{

    if(editingStyle == UITableViewCellEditingStyleDelete)

    {

        NSMutableArray *subArray = _dataArray[indexPath.section];

        [subArray removeObjectAtIndex:indexPath.row];

    }

   if(editingStyle == UITableViewCellEditingStyleInsert)

   {

       NSLog(@"插入");

       DeleteModel *model = _dataArray[indexPath.section][indexPath.row];

       model.data = @"新数据";

       NSMutableArray *subArray = _dataArray[indexPath.section];

       [subArray insertObject:model atIndex:indexPath.row];

   }

    

    [tableView reloadData];

}



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

{

    return @"删除";

}





#pragma mark - 移动单元格



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

{

    NSMutableArray *subArray = _dataArray[sourceIndexPath.section];

    DeleteModel *model = _dataArray[sourceIndexPath.section][sourceIndexPath.row];

    [subArray removeObjectAtIndex:sourceIndexPath.row];

    

    NSMutableArray *desArray = _dataArray[destinationIndexPath.section];

    [desArray insertObject:model atIndex:destinationIndexPath.row];

}



#pragma mark - 设置每组中的单元格



- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];

    if(cell == nil)

    {

        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"];

    }

    if(tableView != _table)

    {

        DeleteModel *model = _searchArray[indexPath.row];

        cell.textLabel.text = model.data;

    }

    else

    {

        DeleteModel *model = _dataArray[indexPath.section][indexPath.row];

        cell.textLabel.text = model.data;

    }

    

    

    

    //imageView(头像), detailTextLable(副标题),accessoryType(右侧按键位置),accessoryView,

    

    UIImageView *view = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 30, 30)];

    view.image = [UIImage imageNamed:@"image2"];

    cell.backgroundView = view;

    

    cell.imageView.image = [UIImage imageNamed:indexPath.row%2?@"image1":@"image3"];

    cell.frame = CGRectMake(0, 0, 0, 0);// 默认的,并不能改变大小

    

    cell.detailTextLabel.text = @"莱博余万";

    

    //  设置右边箭头

    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;

    return cell;

}



// 代理方法,给每个 cell 设置不同的高

// 注意: cell 默认是44

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

    if(indexPath.row == 0)

    {

        return 60;

    }

    return 40;

}



#pragma mark - 选择与反选



// 选择

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

{

    DeleteModel *model = _dataArray[indexPath.section][indexPath.row];

    if(_table.editing == YES)

    {

        model.isDelete = YES;

    }

}



// 反选

- (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath

{

    DeleteModel *model = _dataArray[indexPath.section][indexPath.row];

    model.isDelete = NO;

}



#pragma mark - 设置表头



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

{

    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];

    view.backgroundColor = [UIColor lightGrayColor];

    

    UILabel *label = [[UILabel alloc]initWithFrame:CGRectMake(100, 0, 320, 30)];

   

    label.text = _arrayM[section];

    

    label.textColor = [UIColor blackColor];

    [view addSubview:label];

    

    return  view;

}



#pragma mark - 设置右边索引



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

{

    return _arrayM;

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,539评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,911评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,337评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,723评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,795评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,762评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,742评论 3 416
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,508评论 0 271
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,954评论 1 308
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,247评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,404评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,104评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,736评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,352评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,557评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,371评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,292评论 2 352

推荐阅读更多精彩内容