IOS学习笔记(11)TableView中移动cell和section

在TableView中移动cell和section

用tableView的moveSection:toSection:方法把一个Section移动到新位置。也可以使用moveRowAtIndexIndexPath:toIndexPath:方法把一个TableViewCell从当前位置移到一个新位置。

#import <UIKit/UIKit.h>


@interface ThirdViewController : UIViewController<UITableViewDataSource,UITableViewDelegate>

@property(nonatomic,strong)UITableView *myTableView;

@property(nonatomic,strong)NSMutableArray *arrayOfSections;

@end

#import "ThirdViewController.h"


@interface ThirdViewController ()


@end


@implementation ThirdViewController

@synthesize myTableView,arrayOfSections;


- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self != nil) {

        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];

    }

    return self;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

self.title = @"Third";

    self.view.backgroundColor = [UIColor grayColor];

    

    myTableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];

    myTableView.delegate = self;

    myTableView.dataSource = self;

    [self.view addSubview:myTableView];

    //[self moveSection1ToSection3]; //移动section

    //[self moveCellInSection1ToCell2InSection1]; //在一个section里面移动cell

    [self moveCell2InSection1ToCell1InSection2];

    

}

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

    NSUInteger result = 0;

    if([tableView isEqual:myTableView]){

        if ([arrayOfSections count]>section) {

            NSMutableArray *sectionArray = [arrayOfSections objectAtIndex:section];

            result = (NSInteger)[sectionArray count];

        }

    }

    return result;

}

-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{

    NSUInteger result = 0;

    if([tableView isEqual:myTableView]){

        result = (NSUInteger)[self.arrayOfSections count];

    }

    return result;

}

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

    UITableViewCell *result = nil;

    if([tableView isEqual:myTableView]){

        static NSString *CellIdentifier = @"CellIdentifier";

        if(result == nil){

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

        }

        NSMutableArray *sectionArray = [arrayOfSections objectAtIndex:indexPath.section];

        result.textLabel.text = [sectionArray objectAtIndex:indexPath.row];

    }

    return result;

}

-(NSMutableArray *)newSectionWithIndex:(NSUInteger)paramIndex withCellCount:(NSUInteger)paramCellCount{

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

    NSUInteger counter = 0;

    for (counter; counter<paramCellCount; counter++) {

        [result addObject:[[NSString alloc]initWithFormat:@"Section %lu Cell %lu",(unsigned long)paramIndex,(unsigned long)counter + 1]];

    }

    return result;

}

-(void)moveSection1ToSection3{

    NSMutableArray *section1 = [arrayOfSections objectAtIndex:0];

    [arrayOfSections removeObject:section1];

    [arrayOfSections addObject:section1];

    [myTableView moveSection:2 toSection:1];

}

-(void)moveCellInSection1ToCell2InSection1{

    NSMutableArray *section1 = [arrayOfSections objectAtIndex:0];

    NSString *cell1InSection1 = [section1 objectAtIndex:0];

    [section1 removeObject:cell1InSection1];

    [section1 insertObject:cell1InSection1 atIndex:1];

    

    NSIndexPath *sourceIndexPath = [NSIndexPath indexPathForRow:0 inSection:0];

    NSIndexPath *destinationIndexPath = [NSIndexPath indexPathForRow:1 inSection:0];

    

    [myTableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];

}

-(void)moveCell2InSection1ToCell1InSection2{

    NSMutableArray *section1 = [arrayOfSections objectAtIndex:0];

    NSMutableArray *section2 = [arrayOfSections objectAtIndex:1];

    

    NSString *cell2InSection1 = [section1 objectAtIndex:1];

    [section1 removeObject:cell2InSection1];

    //NSString *cell1InSection2 = [section2 objectAtIndex:0];

    //[section2 removeObject:cell1InSection2];

    [section2 insertObject:cell2InSection1 atIndex:0];

    

    NSIndexPath *sourceIndexPath = [NSIndexPath indexPathForRow:1 inSection:0];

    NSIndexPath *destinationIndexPath = [NSIndexPath indexPathForRow:0 inSection:1];

    

    [myTableView moveRowAtIndexPath:sourceIndexPath toIndexPath:destinationIndexPath];

}

- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

    // Dispose of any resources that can be recreated.

}


@end


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值