UITableViewController

//

//  ViewController.m

//  TableDemo

//

//  Created by djy dda on 12-7-19.

//  Copyright (c) 2012年 __MyCompanyName__. All rights reserved.

//



#import "ViewController.h"

#import <Foundation/Foundation.h>



@implementation ViewController



- (id)init{

    self = [super init];

    if(self !=nil){

        ///构建文件列表

        [self reload];

        ///初始化导航栏按钮

        self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(startEditing)];

        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Reload" style:UIBarButtonItemStylePlain target:self action:@selector(reload)];

        

    }

    return self;

}



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

  return [NSMutableArray arrayWithObjects:@"A",@"B",@"C",@"D",@"E",@"F",

                                          @"G",@"H",@"I",@"J",@"K",@"L",

                                          @"M",@"N",@"O",@"P",@"Q",@"R",

                                          @"S",@"T",@"U",@"V",@"W",@"X",

                                          @"Y",@"Z",@"#", nil];  

}

- (void) startEditing{

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

    

    self.navigationItem.rightBarButtonItem=[[UIBarButtonItem alloc ] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(stopEditing)];

                                            

}



-(void) stopEditing{

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

    

    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemEdit target:self action:@selector(startEditing)];

}



-(void) reload {

    NSDirectoryEnumerator *dirEnum;

    NSString *file;

    for(int i =0; i<27; i++){

        fileList [i] = [[NSMutableArray alloc] init];

    }

    dirEnum = [[NSFileManager defaultManager] enumeratorAtPath:NSHomeDirectory()];

    

    while ((file = [dirEnum nextObject])) {

        char index = ([file cStringUsingEncoding:NSASCIIStringEncoding ])[0];

        if(index >='a' && index <='z'){

            index -=32;

        }

        if (index >='A' && index <='Z') {

            index -=65;

            [fileList[(int)index] addObject:file];

        }else{

            [fileList[26] addObject:file];

        }

    }

    nActiveSections = 0;

    activeSections = [[NSMutableArray alloc] init];

    sectionTitles = [[NSMutableArray alloc] init];

    for (int i = 0; i< 27; i++) {

        if([fileList[i] count]>0){

            nActiveSections ++;

            [activeSections addObject:fileList[i]];

             if(i<26){

                 [sectionTitles addObject:[NSString stringWithFormat:@"%C",i+65]];

                  }else{

                      [sectionTitles addObject:@"0-9"];

                  }

        }

    }

    [self.tableView reloadData];

    

}



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

{

    return [sectionTitles objectAtIndex:section];

}



- (NSInteger) numberOfSectionsInTableView:(UITableView *)tableView  

{

    return  nActiveSections;

}



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

{

    return [[activeSections objectAtIndex:section]count];

}



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

    int i=0;

    for(NSString *sectionTitle in sectionTitles){

        if([sectionTitle isEqualToString:title]){

            [tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:i] atScrollPosition:UITableViewScrollPositionTop animated:YES];

            return i;

        }

        i++;

    }

    return -1;

}



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

{

    NSString *CellIdentifier = [[activeSections objectAtIndex:[indexPath indexAtPosition:0]] objectAtIndex:[indexPath indexAtPosition:1]];

    

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if(cell==nil){

        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

        

        cell.textLabel.text = CellIdentifier;

      

    }

    return cell;

}



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

    

    if(editingStyle ==UITableViewCellEditingStyleDelete){

        ///从数据园中删除

        UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

        for (int i=0; i<[[activeSections objectAtIndex:[indexPath indexAtPosition:0]] count]; i++) {

            

            if([cell.textLabel.text isEqualToString:[[activeSections objectAtIndex:[indexPath indexAtPosition:0]]

                                                     objectAtIndex:i]]){

            

                [[activeSections objectAtIndex:[indexPath indexAtPosition:0]] removeObjectAtIndex:i];

            }

        }

        ///从表格中删除

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

        [array addObject: indexPath];

        [self.tableView deleteRowsAtIndexPaths:array withRowAnimation:UITableViewRowAnimationTop];

    }

    

}



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

    UITableViewCell *cell = [self.tableView cellForRowAtIndexPath:indexPath];

    

    UIAlertView *alert = [[UIAlertView alloc ] initWithTitle:@"File Selected" 

                                           message:[NSString stringWithFormat:@"you selected the file '%@'",cell.textLabel.text] 

                                           delegate:nil 

                                           cancelButtonTitle:nil 

                                           otherButtonTitles:@"OK", nil];

    [alert show];

    

}



- (void) loadView{

    [super loadView];

}





- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation

{

    // Return YES for supported orientations

    return YES;

}



-(void) didReceiveMemoryWarning{

    [super didReceiveMemoryWarning];

}





@end

辛苦敲打的代码 留作纪念~~

你可能感兴趣的:(UITableView)