UITableView的简单使用

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

 有关于UITableView的介绍,在苹果官网上有比较具体的介绍,下面我还是简单复述一下下。表用于显示数据列表,数据列表中的每项都由行表示 ,共主要作用如下:

  • 为了让用户能通过分层的数据进行导航
  • 为了把项以索引列表的形式展示
  • 用于分类不同的项并展示其详细信息
  • 为了展示选项的可选列表

UITableView的种类:

  • 一种是分组表:                                                          另一种是无格式表 :

1.2                                                     1.1

UITableView的组成:

  表中的每一行都由一个UITableViewCell表示,可以使用一个图像、一些文本、一个可选的辅助图标来配置每个UITableViewCell对象,其模型如下:

cell

UITableViewCell类为每个Cell定义了一些属性:

  • textLabel:Cell的主文本标签(一个UILabel对象)
  • detailTextLabel:Cell的二级文本标签,当需要添加额外细节时(一个UILabel对象)
  • imageView:一个用来装载图片的图片视图(一个UIImageView对象)

UITableView的创建:

create

1.视图布局:UITableView类继承自UIScrollView类,像其他视图一样,其实例通过窗体定义自己的边界,还可以是  其他视图的子类或父类。UITableViewController负责处理布局,并会使用一个UITableView进行填充。

2.指定数据源:UITableView实例依赖外部资源按需为新表格单元或现有表格单元提供内容,数据源根据索引路径提 供表格单元格,索引路径是NSIndexPath类的对象,描述通过数据树到达特定节点的路径,即它们的分段和它们的行。

myIndexPath=[NSIndexPath indexPathForRow:5 inSection:0];

3.指定委托:UITableView实例使用委托响应用户交互,并实现有意义的响应,委托告知表格将响应这些交互的责任移交给指定对象,委托必须实现UITableViewDelegate协议。

实践:

有了上面的一些基本知识,下面做一个小实验。

效果图:

phone1                                        iphone2

 

实现的一些关键代码:

  RootViewController是主屏幕控制器,用来展示最上方的示图。示图的每一行分别由不同的类来创建。

 其每行创建代码如下:

 - (void)createRows{    [self addSectionAtIndex:0 withAnimation:UITableViewRowAnimationFade];            [self appendRowToSection:0            cellClass:[LabelCell class]            cellData:@"This is row"                       withAnimation:         UITableViewRowAnimationLeft];         [self addSectionAtIndex:1 withAnimation:UITableViewRowAnimationFade];            [self appendRowToSection:1            cellClass:[NibLoadedCell class]            cellData:@"This is row"             withAnimation: UITableViewRowAnimationLeft];                     [self addSectionAtIndex:2 withAnimation:UITableViewRowAnimationFade];            [self appendRowToSection:2            cellClass:[TextFieldCell class]            cellData:[NSMutableDictionary             dictionaryWithObjectsAndKeys:                    @"TextField", @"label", @"", @"value",                    NSLocalizedString(@"input value here", @""), @"placeholder", nil]         withAnimation:UITableViewRowAnimationLeft];    [self hideLoadingIndicator];}

编写UITableViewCell子类的代码:

  + (NSString *)nibName{    return @"NibCell";} - (void)handleSelectionInTableView:(UITableView *)aTableView{    [super handleSelectionInTableView:aTableView];         NSInteger rowIndex = [self indexPath].row;    [((PageViewController *)aTableView.delegate).navigationController        pushViewController:            [[[DetailViewController alloc] initWithRowIndex:rowIndex] autorelease]        animated:YES];} - (void)configureForData:(id)dataObject    tableView:(UITableView *)aTableView    indexPath:(NSIndexPath *)anIndexPath{    [super configureForData:dataObject tableView:aTableView indexPath:anIndexPath];         label.text = dataObject;}
以上内容是本人学习ios开发的一个小笔记,代码借鉴Matt Gallagher的作品,根据其作品作详细的学习,并加以修改。谢谢阅读,希望对您有用。
完整代码下载 TableDesign
 
  
 
  
另:
 
  

一、建立 UITableView

 DataTable = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, 420)]; [DataTable setDelegate:self]; [DataTable setDataSource:self]; [self.view addSubview:DataTable]; [DataTable release];

二、UITableView各Method说明

 

//Section总数- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{ return TitleData;}

// Section Titles//每个section显示的标题- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ return @"";}

//指定有多少个分区(Section),默认为1- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 4;}

//指定每个分区中有多少行,默认为1- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{}

//绘制Cell-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {static NSString *SimpleTableIdentifier = @"SimpleTableIdentifier";      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier : SimpleTableIdentifier];    if (cell == nil) {          cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault                                       reuseIdentifier: SimpleTableIdentifier] autorelease]; } cell.imageView.image = image;//未选cell时的图片 cell.imageView.highlightedImage = highlightImage;//选中cell后的图片 cell.text=//..... return cell;}

//行缩进-(NSInteger)tableView:(UITableView *)tableView indentationLevelForRowAtIndexPath:(NSIndexPath *)indexPath{ NSUInteger row = [indexPath row]; return row;}

//改变行的高度- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    return 40;}

//定位[TopicsTable setContentOffset:CGPointMake(0, promiseNum * 44 + Chapter * 20)];

//返回当前所选cellNSIndexPath *ip = [NSIndexPath indexPathForRow:row inSection:section];[TopicsTable selectRowAtIndexPath:ip animated:YES scrollPosition:UITableViewScrollPositionNone];

[tableView setSeparatorStyle:UITableViewCellSelectionStyleNone];

//选中Cell响应事件- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{

 [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失}

//判断选中的行(阻止选中第一行)-(NSIndexPath *)tableView:(UITableView *)tableView willSelectRowAtIndexPath:(NSIndexPath *)indexPath{    NSUInteger row = [indexPath row];    if (row == 0)        return nil;       return indexPath;}

//划动cell是否出现del按钮- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {}

//编辑状态- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyleforRowAtIndexPath:(NSIndexPath *)indexPath{}

[topicsTable setContentSize:CGSizeMake(0,controller.promiseNum * 44)];//右侧添加一个索引表- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView{}

//返回Section标题内容- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{}

//自定义划动时del按钮内容- (NSString *)tableView:(UITableView *)tableViewtitleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath

//跳到指的row or section[tableView scrollToRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] atScrollPosition:UITableViewScrollPositionBottom animated:NO];

 

三、在UITableViewCell上建立UILable多行显示

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    static NSString *CellIdentifier = @"Cell";       UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];    if (cell == nil) {        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];  UILabel *Datalabel = [[UILabel alloc] initWithFrame:CGRectMake(10, 0, 320, 44)];  [Datalabel setTag:100];  Datalabel.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;  [cell.contentView addSubview:Datalabel];  [Datalabel release]; }  UILabel *Datalabel = (UILabel *)[cell.contentView viewWithTag:100]; [Datalabel setFont:[UIFont boldSystemFontOfSize:18]]; Datalabel.text = [data.DataArray objectAtIndex:indexPath.row]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;    return cell;}

 

 

//选中cell时的颜色

typedef enum {    UITableViewCellSelectionStyleNone,    UITableViewCellSelectionStyleBlue,    UITableViewCellSelectionStyleGray} UITableViewCellSelectionStyle

 

//cell右边按钮格式

typedef enum {
       UITableViewCellAccessory None,                                     // don't show any accessory view
       UITableViewCellAccessory DisclosureIndicator,       // regular chevron. doesn't track
       UITableViewCellAccessory DetailDisclosureButton, // blue button w/ chevron. tracks
       UITableViewCellAccessory Checkmark                             // checkmark. doesn't track
} UITableViewCellAccessory Type

 

//是否加换行线

typedef enum {    UITableViewCellSeparatorStyleNone,    UITableViewCellSeparatorStyleSingleLine} UITableViewCellSeparatorStyle

 

//改变换行线颜色

tableView.separatorColor = [UIColor blueColor];

           

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow
这里写图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值