iOS UI笔记-TableView-02
实现功能:使用UITableViewDatasource和UITableViewDelegate实现表视图单元格的选中交互功能。在第一个页面用表视图显示两个单元格样式标签,“普通的单元格样式”和“分组的单元格样式”,点击这两个标签时,进入第二个页面,显示对应的样式数据。第二个页面的显示内容是将字符集所有字符内容按5个一组进行分组,进行分组显示或平铺展示。
1、参考TableView-01,新建Root02ViewController,实现表视图单元格数据的加载和展示;
2、给Root02ViewController追加UITableViewDelegate的协议,实现协议的didSelectRowAtIndexPath方法。
#pragma TableView Delegate - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { DetailViewController *detailVC = [[DetailViewController alloc] init]; detailVC.isPlain = indexPath.row ? NO : YES; [self.navigationController pushViewController:detailVC animated:YES]; [detailVC release]; }
3、参照Root02ViewControlle新建Detail02ViewController,先在loadView方法中完成对字符集所有字符进行分组,
- (void)loadView { UIView *view = [[UIView alloc] initWithFrame:[UIScreen mainScreen].applicationFrame]; self.view = view; [view release]; NSArray *array = [UIFont familyNames]; _fontsArray = [[NSMutableArray alloc] initWithCapacity:13]; NSMutableArray *temp = nil; for (int index = 0; index < [array count]; index++) { // 取出字体内容 NSString *font = array[index]; if (index % 5 == 0) { temp = [[NSMutableArray alloc] initWithCapacity:5]; [_fontsArray addObject:temp]; [temp release]; } // 将5整除时,创建temp数组,添加到_fontsArray [temp addObject:font]; } UITableViewStyle style = self.isPlain ? UITableViewStylePlain : UITableViewStyleGrouped; _tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, 320, kDeviceHeight-20-44) style:style]; // 设置数据源 _tableView.dataSource = self; // 设置代理方法 _tableView.delegate = self; UIView *headerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)]; headerView.backgroundColor = [UIColor redColor]; // 添加子视图 UILabel *headText = [[UILabel alloc] initWithFrame:CGRectMake(60, 0, 200, 80)]; headText.backgroundColor = [UIColor clearColor]; headText.text = @"秋高气爽"; headText.textAlignment = NSTextAlignmentCenter; headText.numberOfLines = 0; [headerView addSubview:headText]; [headText release]; _tableView.tableHeaderView = headerView; [headerView release]; // 设置表视图的尾部视图(footerView 添加子视图) UIView *footerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)]; footerView.backgroundColor = [UIColor yellowColor]; _tableView.tableFooterView = footerView; [footerView release]; [self.view addSubview:_tableView]; }
4、完成Detail02ViewController的三个基本方法numberOfSectionsInTableView,numberOfRowsInSection、cellForRowAtIndexPath
#pragma mark - UITablView DataSource - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [_fontsArray count]; // 13 } // 表视图当中存在secion的个数,默认是1个 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section; { NSLog(@"secion : %d", section); return [_fontsArray[section] count]; // 5 } // section 中包含row的数量 // indexPath - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *cellIdentifier = @"cell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; NSLog(@"indexPath : %@", indexPath); if (cell == nil) { cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier] autorelease]; } cell.textLabel.text = [[_fontsArray objectAtIndex:indexPath.section] objectAtIndex:indexPath.row]; return cell; } // 创建单元格
5、进行测试,检查页面展示的数据是否为我们想要的数据
6、为每个Section添加头部和尾部的标题、高度和相应的视图
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
if (section == 0) {
return 44;
}return 25;
} // 设置section header的高度
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
if (section == 12) {
return 80;
}return 50;
} // 设置section footer的高度
/*
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UIView *headerView = [[UIView alloc] initWithFrame:CGRectZero];
headerView.backgroundColor = [UIColor cyanColor];
return [headerView autorelease];
}*/ // 设置section自定义头部视图
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
UIView *footerView = [[UIView alloc] initWithFrame:CGRectZero];
footerView.backgroundColor = [UIColor cyanColor];
UILabel *tipLabel = [[UILabel alloc] initWithFrame:CGRectMake(60, 0, 200, 30)];
tipLabel.numberOfLines = 0;
tipLabel.textAlignment = NSTextAlignmentCenter;
tipLabel.text = [NSString stringWithFormat:@"section footer %d", section+1];
[footerView addSubview:tipLabel];
[tipLabel release];
return [footerView autorelease];
} // 设置section自定义尾部视图
7、单独为某个单元格设置高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.row == 0 && indexPath.section == 2) {
return 80; // 第三个section中第一行
}return 44;
} // 设置行高
相关推荐
"IOS-横向-TableView-Demo"就是一个这样的示例项目,它展示了如何在iOS应用中创建一个既能横向又能纵向滚动的表格视图。 这个Demo的核心是扩展UITableView的功能,使其能够处理横向数据。在标准的UITableView中,每...
在`iOS开发 - 第02篇 - UI进阶 - 03 - TableView Cell`中,我们将深入探讨以下知识点: 1. **UITableViewCell**:作为UITableView的基本单元,UITableViewCell是显示数据的最小元素。每个cell通常包含一个或多个...
这篇教程“iOS开发 - 第02篇 - UI进阶 - 02 - TableView”将深入探讨如何使用UITableView来创建一个类似iPhone通讯录的应用,展示各种车标志的列表。 首先,UITableView是一个可滚动的控件,它允许用户通过上下滑动...
本压缩包“ios-swift---tableview.zip”显然关注的是如何在Swift中使用UITableView来创建动态、可滚动的数据展示视图。UITableView是iOS应用开发中的一个核心组件,它允许开发者以列表形式展示大量数据,用户可以...
综上所述,"ios-tableview-上拉加载更多"涉及到了UITableView的数据源和代理方法的使用、滚动事件监听、网络请求、UI反馈和性能优化等多个方面,这些都是iOS开发中非常重要的知识点。通过实践这些技术,开发者可以...
"ios-TableView-悬停.zip"这个压缩包可能包含了一个实现UITableView独特功能的示例,即“悬停”效果。在普通情况下,UITableView会在用户滚动时移除当前屏幕外的单元格,而“悬停”效果则是让某一行或某一列在滚动时...
本项目"ios-Swift-tableVIew.zip"显然聚焦于使用Swift和UITableView来创建自定义Cell,同时结合了Masnory进行约束布局,以实现灵活、适应性强的界面设计。以下是对这些知识点的详细讲解: 1. **Swift语言**:Swift...
总的来说,"ios-tableView的多项选择删除.zip"项目涵盖了在iOS应用中实现tableView多选删除的核心步骤,包括开启多选模式、处理用户选择、展示选中状态以及实现删除功能。开发者可以根据自己的需求进行相应的扩展和...
在iOS开发中,UITableView是一种非常重要的UI组件,用于展示数据列表。这个名为“ios-Move-Delete-Insert-TableView.zip”的资源包显然包含了关于如何在UITableView中实现添加、删除和移动表格行的教程或代码示例。...
在“ios-TableView-条件筛选.zip”这个压缩包中,包含了一个名为“ExampleWithTableView”的示例项目,它展示了如何在UITableView中实现简单的条件筛选功能。这种功能在许多应用程序中都非常常见,例如在电商应用中...
本资源提供的"IOS开发-TableView表视图基础 源码"旨在帮助开发者掌握UITableView的基本使用方法和核心概念。 1. **UITableView介绍** UITableView是一个用于展示动态数据的滚动视图,它可以显示一行行的数据,每个...
当我们谈论"ios-tableview编辑.zip"时,很显然这个压缩包可能包含了一系列关于如何实现UITableView的编辑和删除功能的代码示例、教程或资源。在iOS应用中,允许用户编辑和删除表格内容能提升用户体验,使他们能够更...
在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。在某些设计中,我们可能会遇到这样的需求:当用户下拉表格时,顶部的图片会放大,形成一种动态的视觉效果。这个“ios-tableview下拉图片放大”的...
在这个“ios-类似百度外卖首页---tableview内嵌套collectionview”的项目中,开发者通过代码抽离和分类的方式,实现了首页控制器的瘦身,提升了代码的可读性和可维护性。 首先,我们来详细解释这个标题所涉及的知识...
"ios-Tableview测试.zip"中的项目可能是一个简单的示例,用于演示如何在iOS应用中有效地使用UITableView。TestTravelController很可能是一个实现了UITableViewDataSource和UITableViewDelegate协议的...
这个“ios-TableView的Cell上播放视频.zip”资源可能包含了一个示例项目,用于演示如何在UITableView的每个单元格(Cell)中播放视频。以下是对这个主题的详细说明: 首先,为了在UITableView的Cell中播放视频,...
这个"ios-TableView.zip"文件很可能是包含了一些关于如何在iOS应用中使用TableView的示例代码或者教程资料。 TableView的核心概念与知识点包括: 1. UITableView类:作为iOS SDK中的主要视图类,UITableView负责...
在点击事件处理后,我们需要更新数据模型,然后调用`tableView.reloadData()`刷新界面,确保UI与数据同步。 7. **动画效果**: 为了提供更好的用户体验,可以在展开和收起二级列表时添加平滑的动画。可以利用`...
而“ios-tableview 嵌套 悬停”这个项目,显然关注的是如何在UITableView中实现嵌套的效果,并且具备悬停功能。这个项目来源于GitHub上的开源库`ArtScrollTableView`,由LeeWongSnail开发,提供了高级的滚动和悬停...
这个入门示例将带你逐步了解如何在iOS应用中使用TableView,展示基础的数据,并进行更高级的定制。 首先,让我们了解一下UITableView的基本概念: 1. **UITableView**:它是苹果提供的一个类,用于创建和管理包含...