分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
有关于UITableView的介绍,在苹果官网上有比较具体的介绍,下面我还是简单复述一下下。表用于显示数据列表,数据列表中的每项都由行表示 ,共主要作用如下:
- 为了让用户能通过分层的数据进行导航
- 为了把项以索引列表的形式展示
- 用于分类不同的项并展示其详细信息
- 为了展示选项的可选列表
UITableView的种类:
- 一种是分组表: 另一种是无格式表 :
UITableView的组成:
表中的每一行都由一个UITableViewCell表示,可以使用一个图像、一些文本、一个可选的辅助图标来配置每个UITableViewCell对象,其模型如下:
UITableViewCell类为每个Cell定义了一些属性:
- textLabel:Cell的主文本标签(一个UILabel对象)
- detailTextLabel:Cell的二级文本标签,当需要添加额外细节时(一个UILabel对象)
- imageView:一个用来装载图片的图片视图(一个UIImageView对象)
UITableView的创建:
1.视图布局:UITableView类继承自UIScrollView类,像其他视图一样,其实例通过窗体定义自己的边界,还可以是 其他视图的子类或父类。UITableViewController负责处理布局,并会使用一个UITableView进行填充。
2.指定数据源:UITableView实例依赖外部资源按需为新表格单元或现有表格单元提供内容,数据源根据索引路径提 供表格单元格,索引路径是NSIndexPath类的对象,描述通过数据树到达特定节点的路径,即它们的分段和它们的行。
myIndexPath=[NSIndexPath indexPathForRow:5 inSection:0];
3.指定委托:UITableView实例使用委托响应用户交互,并实现有意义的响应,委托告知表格将响应这些交互的责任移交给指定对象,委托必须实现UITableViewDelegate协议。
实践:
有了上面的一些基本知识,下面做一个小实验。
效果图:
实现的一些关键代码:
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];