IOS开发(28)UITableView之移动Section和Cell
2013-05-02 13:46
489 查看
1 前言
今天我们来学习一下如何移动UITableView控件中的Section和Cell2 代码实例
ZYViewController.h#import <UIKit/UIKit.h> @interface ZYViewController : UIViewController<UITableViewDelegate,UITableViewDataSource> @property(nonatomic,strong)UITableView *myTableView; @property(nonatomic,strong)NSMutableArray *arrayOfSections;//数据源 @end
ZYViewController.m
@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]; }
运行结果:
点击右侧按钮后效果:
点击左侧按钮后效果:
3 结语
以上就是全部内容,希望对大家有所帮助。Demo下载地址:http://download.csdn.net/detail/u010013695/5322406
相关文章推荐
- iOS开发:UITableView编辑——cell的删除和移动
- IOS 构造和使用TableView(基于storyboard) (七)移动cell和section
- ios UITableview 刷新某一个cell 或 section
- ios UITableview 刷新某一个cell 或 section
- iOS开发笔记--解决UITableView中Cell重用机制导致内容出错的方法总结
- ios UITableview 刷新某一个cell 或 section
- iOS开发:XIB之UITableView自定义cell
- uitableview刷新指定section 或 刷新指定 cell (ios)
- [IOS] iphone开发之UITableView之UITableViewCell [待续中。。。]
- iOS开发——UITableView优化之缓存cell高度
- iOS开发之高级视图—— UITableView操作——移动
- ios UITableview 刷新某一个cell 或 section
- IOS开发 UITableView中Cell重用机制导致内容重复解决方法
- IOS UITableView 移动自定义cell
- iOS UITableView 刷新某一个cell 或 section
- iOS开发-------模拟团购网站(UITableView 表格视图)以及自定义cell
- 【iOS开发】关于UITableView的cell循环使用
- IOS UITableView reload 刷新某一个cell 或 section
- iOS UITableView中关于cell里的按钮被点击时如何确定是哪一个section
- iOS开发-UI控件:让UITableView自动滑动(定位)到某一行cell