zoukankan      html  css  js  c++  java
  • UI3_UITableViewDelete(多选)

    //  AppDelegate.m
    //  UI3_UITableViewDelete(多选)
    //
    //  Created by zhangxueming on 15/7/14.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "AppDelegate.h"
    #import "ViewController.h"
    
    
    @interface AppDelegate ()
    
    @end
    
    @implementation AppDelegate
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        ViewController *root = [[ViewController alloc] init];
        UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:root];
        self.window.rootViewController = nav;
        [self.window makeKeyAndVisible];
        
        return YES;
    }
    
    //
    //  ViewController.h
    //  UI3_UITableViewDelete(多选)
    //
    //  Created by zhangxueming on 15/7/14.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
    
    
    @end
    
    
    //
    //  ViewController.m
    //  UI3_UITableViewDelete(多选)
    //
    //  Created by zhangxueming on 15/7/14.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    {
        UITableView *_tableView;
        //数据源
        NSMutableArray *_dataList;
        //要删除的数据
        NSMutableArray *_removeList;
    }
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        [self creatDataSource];
        [self creatUI];
    }
    
    //创建数据源
    - (void)creatDataSource
    {
        _dataList = [NSMutableArray array];
        _removeList = [NSMutableArray array];
        NSMutableArray *boys = [NSMutableArray array];
        for (int i=0; i<20; i++) {
            NSString *name = [NSString stringWithFormat:@"boy:%d", i+1];
            [boys addObject:name];
        }
        [_dataList addObject:boys];
        
        NSMutableArray *grils = [NSMutableArray array];
        for (int i= 0; i<10; i++) {
            NSString *name = [NSString stringWithFormat:@"gril:%d", i+1];
            [grils addObject:name];
        }
        [_dataList addObject:grils];
    }
    
    //创建UI
    
    - (void)creatUI
    {
        _tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain];
        
        //设置代理
        _tableView.delegate = self;
        _tableView.dataSource = self;
        
        //设置尾视图
        UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0,0, self.view.frame.size.width, 44)];
        footerView.backgroundColor = [UIColor cyanColor];
        _tableView.tableFooterView = footerView;
        NSLog(@"view = %@", _tableView.tableFooterView);
        //设置头视图
        UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.height, 44)];
        headerView.backgroundColor = [UIColor yellowColor];
        _tableView.tableHeaderView = headerView;
        
        //添加Btn
        
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeSystem];
        btn.frame =CGRectMake(50, 0, footerView.frame.size.width-100,44);
        [btn setTitle:@"remove" forState:UIControlStateNormal];
        [btn addTarget:self action:@selector(removeData) forControlEvents:UIControlEventTouchUpInside];
        [footerView addSubview:btn];
        
        //设置编辑按钮
        self.navigationItem.leftBarButtonItem = self.editButtonItem;
        
        
        [self.view addSubview:_tableView];
    
    }
    
    //进入编辑状态
    
    - (void)setEditing:(BOOL)editing animated:(BOOL)animated
    {
        [super setEditing:editing animated:YES];
        [_tableView setEditing:editing animated:YES];
    }
    
    //Editing
    
    - (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        //同时设置insert 及 delete 自动进入多选状态
        return  UITableViewCellEditingStyleDelete|UITableViewCellEditingStyleInsert;
    }
    
    //删除数据
    - (void)removeData
    {
        for (int i=0; i<2; i++) {
            NSArray *array = [[_dataList objectAtIndex:i] copy];
            NSInteger rows  = array.count;
            for (int j=0; j<rows; j++) {
                NSString *obj = [array objectAtIndex:j];
                if ([_removeList containsObject:obj]) {
                    [[_dataList objectAtIndex:i] removeObject:obj];
                }
            }
        }
        [_tableView reloadData];
    }
    
    
    #pragma mark   ---UITableView---
    
    //返回分区个数
    - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return _dataList.count;
    }
    
    //返回每个分区有多少行
    
    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [[_dataList objectAtIndex:section] count];
    }
    
    //返回UITableViewCell
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        static NSString *cellID = @"cell";
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellID];
        if (!cell) {
            cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellID];
        }
        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        cell.textLabel.text = [[_dataList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
        return cell;
    }
    
    //选中状态
    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        
        if (tableView.editing) {
            NSString *obj = [[_dataList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
            if (![_removeList containsObject: obj])
            {
                [_removeList addObject:obj];
            }
        }
    }
    
    //结束选中状态
    - (void)tableView:(UITableView *)tableView didDeselectRowAtIndexPath:(NSIndexPath *)indexPath
    {
        if (tableView.editing) {
            NSString *obj = [[_dataList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row];
            if ([_removeList containsObject:obj]) {
                [_removeList removeObject:obj];
            }
        }
    }
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
    
  • 相关阅读:
    剑指Offer-11.二进制中1的个数(C++/Java)
    剑指Offer-10.矩形覆盖(C++/Java)
    剑指Offer-9.变态跳台阶(C++/Java)
    UVA 1608 Non-boring sequence 不无聊的序列(分治,中途相遇)
    UVA1607 Gates 与非门电路 (二分)
    UVA 1451 Average平均值 (数形结合,斜率优化)
    UVA 1471 Defense Lines 防线 (LIS变形)
    UVA 1606 Amphiphilic Carbon Molecules 两亲性分子 (极角排序或叉积,扫描法)
    UVA 11134 FabledRooks 传说中的车 (问题分解)
    UVA 1152 4 Values Whose Sum is Zero 和为0的4个值 (中途相遇)
  • 原文地址:https://www.cnblogs.com/0515offer/p/4645970.html
Copyright © 2011-2022 走看看