IOS UI 第九篇: UITABLEVIEW
{
NSMutableArray *dataSourse;
}
for (int i=0; i<50; ++i) {
NSString *str = [NSString stringWithFormat:@"the %d row", i];
[dataSourse addObject:str];
}
for (int s=0; s<5; ++s) {
NSMutableArray *sectionArray=[NSMutableArray array];
for (int r=0; r<10; ++r) {
NSString *str=[NSString stringWithFormat:@"the %d group--the %d row", s, r];
[sectionArray addObject:str];
}
[dataSource addObject:sectionArray];
}
myTableVie.delegate = self;
myTableVie.dataSource = self;
[self.view addSubview:myTableVie];
@interface ViewController ()<UITableViewDataSource , UITableViewDelegate]]>
@end
{
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"xxxx"];
NSString *str = dataSourse[indexPath.row];
cell.textLabel.text=[NSString stringWithFormat:@"I am a cell %@", str];
return cell;
}
{
return dataSourse.count;
}
{
static NSString *reuseID = @"myCell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:reuseID];
if (cell == nil) {
NSLog(@"alloc new cell");
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseID];
cell.detailTextLabel.text = [NSString stringWithFormat:@"previous %d", indexPath.row];
}
NSString *str=dataSourse[indexPath.row];
cell.textLabel.text=[NSString stringWithFormat:@"I am a cell %@", str];
return cell;
}
{
[super viewDidLoad];
dataSource = [NSMutableArray array];
for (int s=0; s<5; ++s) {
NSMutableArray *sectionArray=[NSMutableArray array];
for (int r=0; r<10; ++r) {
NSString *str=[NSString stringWithFormat:@"the %d group--the %d row", s, r];
[sectionArray addObject:str];
}
[dataSource addObject:sectionArray];
}
UITableView *myTableVie = [[UITableView alloc] initWithFrame:CGRectMake(0, 20, 320, self.view.frame.size.height) style:UITableViewStylePlain];
myTableVie.delegate = self;
myTableVie.dataSource = self;
UIView *headView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 200)];
headView.backgroundColor=[UIColor redColor];
myTableVie.tableHeaderView=headView;
[self.view addSubview:myTableVie];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 30;
}
-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return [NSString stringWithFormat:@"The %d group", section];
}
//DIY group header , but if overwrite the function, the groupheader function is unvaliable..
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *headView=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 30)];
headView.backgroundColor = [UIColor blackColor];
UILabel *label=[[UILabel alloc] initWithFrame:headView.frame];
label.text=[NSString stringWithFormat:@"The %d group", section];
label.textColor=[UIColor redColor];
label.textAlignment = NSTextAlignmentCenter;
label.font=[UIFont boldSystemFontOfSize:15];
[headView addSubview:label];
return headView;
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return dataSource.count;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSArray *sectionArray=dataSource[section];
return sectionArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *reuseID = @"myCell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:reuseID];
if (cell == nil) {
NSLog(@"alloc new cell");
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseID];
cell.detailTextLabel.text = [NSString stringWithFormat:@"previous %d", indexPath.row];
}
NSString *str=dataSource[indexPath.section][indexPath.row];
cell.textLabel.text=str;
return cell;
}
NSLog(@"tableview ");
//delete the data in a row
NSMutableArray *sectionArray = dataSource[indexPath.section];
[sectionArray removeObjectAtIndex:indexPath.row];
//delete a row in tableview
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
NSLog(@"d1 :%@", sender);
NSLog(@"d2 :%@", self);
myTableView.editing=NO;
}else{
myTableView.editing=YES;
}
}
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
return dataSource.count;
}
//Set group header height
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 30;
}
//Set group header text
-(NSString*)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{
return [NSString stringWithFormat:@"The %d group",section];
}
-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
UIView *headView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 30)];
UILabel *label=[[UILabel alloc]initWithFrame:headView.frame];
label.text=[NSString stringWithFormat:@"The %d group ",section];
label.font=[UIFont boldSystemFontOfSize:15];
label.textColor=[UIColor redColor];
label.textAlignment=NSTextAlignmentCenter;
[headView addSubview:label];
return headView;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
NSArray *sectionArray=dataSource[section];
return sectionArray.count;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *reuseID=@"myCell";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:reuseID];
if (cell==nil) {
NSLog(@"new cell");
cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:reuseID];
cell.detailTextLabel.text=[NSString stringWithFormat:@"privious %d",indexPath.row];
}
NSString *str=dataSource[indexPath.section][indexPath.row];
cell.textLabel.text=str;
return cell;
}
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath{
/*
UITableViewCellEditingStyleNone,
UITableViewCellEditingStyleDelete,
UITableViewCellEditingStyleInsert
*/
if (editingStyle==UITableViewCellEditingStyleInsert) {
//1、insert a data
NSString *str=[NSString stringWithFormat:@“new the line %d",indexPath.row];
NSMutableArray *sectionArray=dataSource[indexPath.section];
[sectionArray insertObject:str atIndex:indexPath.row];
//2、insert a row in tableview
[tableView insertRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationRight];
}else if (editingStyle==UITableViewCellEditingStyleDelete){
//1、remove a row in datasource.
NSMutableArray *sectionArray=dataSource[indexPath.section];
[sectionArray removeObjectAtIndex:indexPath.row];
//2、remove a row in tableview.
[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
-(UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath{
if (indexPath.section%2==0) {
return UITableViewCellEditingStyleDelete;
}
return UITableViewCellEditingStyleInsert;
}
-(void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)sourceIndexPath toIndexPath:(NSIndexPath *)destinationIndexPath{
NSMutableArray *sourceSectionArray=dataSource[sourceIndexPath.section];
id sourceData=sourceSectionArray[sourceIndexPath.row];
[sourceSectionArray removeObject:sourceData];
//remove it in previous location
NSMutableArray *destinationSectionArray=dataSource[destinationIndexPath.section];
[destinationSectionArray insertObject:sourceData atIndex:destinationIndexPath.row];
//Insert the row in new location
[tableView reloadRowsAtIndexPaths:@[destinationIndexPath] withRowAnimation:UITableViewRowAnimationNone];
//refresh a row, but have some error in the application.
[tableView reloadData];
}

IOS UI 第九篇: UITABLEVIEW的更多相关文章
- iOS开发——UI_swift篇&UITableView实现单元格展开与隐藏
UITableView实现单元格展开与隐藏 关于UITableView的展开的收缩在前面的文章我已经结束,就是使用代理,通知,block传值的时候实现的,当时是使用一个Bool值来实现,最后使用着三 ...
- iOS开发——UI_swift篇&UITableView实现索引功能
UITableView实现索引功能 关于UItableView的索引在平时项目中所见不多,最多的就是跟联系人有关的界面,虽然如此,但是作为一个swift开发的程序必须知道的一个技术点,所以今天 ...
- IOS UI 第二篇:基本UI
1.UI书写: 一个小练习图片如下: 代码如下: @implementation AppDelegate{ UIControl *control; UILabel *l ...
- iOS开发——UI_swift篇&UItableView实现移动单元格
UItableView实现移动单元格 1,下面的样例是给表格UITableView添加单元格移动功能: (1)给表格添加长按功能,长按后表格进入编辑状态 (2)在编辑状态下,可以看到单元格后面出现 ...
- IOS UI 第一篇:基本UI
1. UI 书写 最基本创建一个label 标签 写一个first rate : UILabel *label = [[UILabel alloc] initWithFrame:CGRect ...
- IOS设计模式第九篇之备忘录模式
版权声明:原创作品,谢绝转载!否则将追究法律责任. 备忘录模式捕获和具体化对象的内部状态.换句话说,它可以节省你的东西后来,这种外部状态可以恢复在不违反封装; 也就是说,私人数据是私有的. 怎么用备忘 ...
- iOS开发UI篇—UITableview控件简单介绍
iOS开发UI篇—UITableview控件简单介绍 一.基本介绍 在众多移动应⽤用中,能看到各式各样的表格数据 . 在iOS中,要实现表格数据展示,最常用的做法就是使用UITableView,UIT ...
- iOS开发UI篇—UITableview控件基本使用
iOS开发UI篇—UITableview控件基本使用 一.一个简单的英雄展示程序 NJHero.h文件代码(字典转模型) #import <Foundation/Foundation.h> ...
- iOS开发UI篇—UITableview控件使用小结
iOS开发UI篇—UITableview控件使用小结 一.UITableview的使用步骤 UITableview的使用就只有简单的三个步骤: 1.告诉一共有多少组数据 方法:- (NSInteger ...
随机推荐
- MySQL中游标使用以及读取文本数据
原文:MySQL中游标使用以及读取文本数据 前言 之前一直没有接触数据库的学习,只是本科时候修了一本数据库基本知识的课.当时只对C++感兴趣,天真的认为其它的课都没有用,数据库也是半懂不懂,胡乱就考试 ...
- javascript系列之DOM(一)
原文:javascript系列之DOM(一) DOM(document object moudle),文档对象模型.它是一个中立于语言的应用程序接口(API),允许程序访问并修改文档的结构,内容和样式 ...
- 如何让虚拟机识别插入的USB闪存驱动器
首先,打开虚拟机,再就是工具栏 有一台虚拟机 -> 移动设备 -> usb ->欧克. 版权声明:本文博主原创文章,博客,未经同意不得转载.
- FloatyFish下载量
老师之前没有统一好一个平台,为了公平起见,我们选择了知名度比较高的CSDN,上次课上给老师说的下载量已成为过去,我们目前的下载量是: 这里还有我们最真实的用户体验,来自CSDN的用户,而非我们的朋友: ...
- POJ3468 A Simple Problem with Integers 【段树】+【成段更新】
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 57666 ...
- 【百度地图API】——如何让标注自动呈现在最佳视野内
原文:[百度地图API]--如何让标注自动呈现在最佳视野内 摘要: “我有一堆标注,不规则的散落在地图的各个地方,我想把它们展示在一个最佳视野中,怎么办呢?”一位API爱好者咨询道. -------- ...
- Swift入门教程:基本语法(二)
数字格式 数字可以增加额外的格式,使它们更容易阅读 可以增加额外的零 0 let money = 001999 // 1999 let money2 = 001999.000 ...
- 搭建一个三台服务器的Memcached集群
关于memcached的基础知识可以查看博客其他博文,这里只记录了搭建的过程,谢谢! 1.分别在三台服务器上安装Memcached并启动 第一.由于memcached是基于libevent的事件处理, ...
- Asp.Net MVC5入门学习系列⑦
原文:Asp.Net MVC5入门学习系列⑦ 接着上篇结尾所说,如果开发中刚才遇到Model需要添加或者减少字段/属性的话,但是刚好你也利用EF的Code frist通过Model生存的数据库,这时改 ...
- 快速构建Windows 8风格应用5-ListView数据控件
原文:快速构建Windows 8风格应用5-ListView数据控件 本篇博文主要介绍什么是ListView数据控件.如何构建ListView数据控件. 什么是ListView数据控件? 1) Li ...