武汉ios培训
达内武汉中心

15271940953

热门课程

UITableView之移动Section和Cell

  • 时间:2016-05-27
  • 发布:Developer_Man
  • 来源:C博客

今天我们来学习一下如何移动UITableView控件中的Section和Cell

代码实例
ZYViewController.h
#import <UIKit/UIKit.h>  
@interface ZYViewController : UIViewController<UITableViewDelegate,UITableViewDataSource>  
@property(nonatomic,strong)UITableView *myTableView;  
@property(nonatomic,strong)NSMutableArray *arrayOfSections;//数据源  
@end  
ZYViewController.m
[plain] view plain copy
@synthesize myTableView;  
@synthesize arrayOfSections;  
 
//初始化数据源每个Cell的内容  
-(NSMutableArray *)newSectionWithIndex:(NSUInteger)paramIndex withCellCount:(NSUInteger)paramCellCount{  
    NSMutableArray *result = [[NSMutableArray alloc]init];  
    NSUInteger counter = 0;  
    for (counter = 0; counter<paramCellCount; counter++) {  
        [result addObject:[[NSString alloc] initWithFormat:@"Section %lu Cell %lu",(unsigned long)paramIndex,(unsigned long)counter+1]];  
    }  
    return result;  
}  
 
- (void)viewDidLoad  
{  
    [super viewDidLoad];  
    // Do any additional setup after loading the view, typically from a nib.  
    //初始化数据源  
    arrayOfSections = [[NSMutableArray alloc] init];  
    NSMutableArray *section1 = [self newSectionWithIndex:1 withCellCount:3];  
    NSMutableArray *section2 = [self newSectionWithIndex:2 withCellCount:3];  
    NSMutableArray *section3 = [self newSectionWithIndex:3 withCellCount:3];  
    [arrayOfSections addObject:section1];  
    [arrayOfSections addObject:section2];  
    [arrayOfSections addObject:section3];  
    myTableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleGrouped];  
    self.myTableView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;  
    //添加代理  
    myTableView.delegate = self;  
    myTableView.dataSource = self;  
    //添加右按钮  
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"MoveSection" style:UIBarButtonItemStylePlain target:self action:@selector(movewSection1ToSection3)];  
    //添加左按钮  
    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"MoveCell" style:UIBarButtonItemStylePlain target:self action:@selector(moveCell2InSectionToCellInSection2)];  
    [self.view addSubview:myTableView];  
      
}  
//Section行数  
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{  
    NSInteger result = 0;  
    if ([tableView isEqual:myTableView]) {  
        result = (NSInteger)[self.arrayOfSections count];  
    }  
    return result;  
}  
//每个Section中的Cell行数  
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{  
    NSInteger result = 0;  
    if ([tableView isEqual:myTableView]) {  
        if ([arrayOfSections count]>section) {  
            NSMutableArray *sectionArray = [self.arrayOfSections objectAtIndex:section];  
            result = (NSInteger)[sectionArray count];  
        }  
    }  
    return result;  
}  
//设置每行Cell的内容  
 
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{  
    UITableViewCell *result = nil;  
    if ([tableView isEqual:myTableView]) {  
        static NSString *CellIdentifier = @"CellIdentifier";  
        result = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];  
    }  
    NSMutableArray *sectionArray = [self.arrayOfSections objectAtIndex:indexPath.section];  
    result.textLabel.text = [sectionArray objectAtIndex:indexPath.row];  
    return result;  
}  
//将第一个索引位置的Section移动放到最后一个位置  
-(void)movewSection1ToSection3{  
    NSMutableArray *section1 = [self.arrayOfSections objectAtIndex:0];  
    [self.arrayOfSections removeObject:section1];  
    [self.arrayOfSections addObject:section1];  
      
    [myTableView moveSection:0 toSection:2];  
}  
//将第一个Section中的第一个Cell和第二个互换  
-(void)moveCell1InSectionToCell2InSection1{  
    NSMutableArray *section1 = [self.arrayOfSections objectAtIndex:0];  
    NSString *cell1InSection1 = [section1 objectAtIndex:0];  
    [section1 removeObject:cell1InSection1];  
    [section1 insertObject:cell1InSection1 atIndex:1];  
    NSIndexPath *sourceIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];  
    NSIndexPath *destinationIdexPath = [NSIndexPath indexPathForRow:1 inSection:0];  
    [self.myTableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIdexPath];  
}  
//将第一个Section的第二个Cell移动到第二个Section的第一个Cell之前的位置  
-(void)moveCell2InSectionToCellInSection2{  
    NSMutableArray *section1 = [arrayOfSections objectAtIndex:0];  
    NSMutableArray *section2 = [arrayOfSections objectAtIndex:1];  
      
    NSString *cell2InSection1 = [section1 objectAtIndex:1];  
    [section1 removeObject:cell2InSection1];  
    [section2 insertObject:cell2InSection1 atIndex:0];  
      
    NSIndexPath *sourceIndexPath = [NSIndexPath indexPathForRow:1 inSection:0];  
    NSIndexPath *destinationIndexPath = [NSIndexPath indexPathForRow:0 inSection:1];  
      
    [myTableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];  

上一篇:武汉ios培训:UIViewController内存管理
下一篇:UITableView的Cell显示长按快捷菜单

想学ios,到哪学比较好

学习ios开发的最佳之选是什么?

学ios,有前途吗?

成为ios开发工程师,培训和自学哪条路更适合你?

选择城市和中心
贵州省

广西省

海南省