我们要实现的效果如下。
1.修改ControlView.h,即添加变量dict,用于存储TabelView的数据源。
#import <UIKit/UIKit.h> @interface IkrboyViewController5 : UIViewController{ NSMutableDictionary *dict; } @end
2.在ControlView.m添加如下修改
- (void)viewDidLoad { [super viewDidLoad]; [self initTableViewData]; // Do any additional setup after loading the view. } -(void)initTableViewData{ NSBundle *bundle = [NSBundle mainBundle]; NSString *plistPath = [bundle pathForResource:@"user_head" ofType:@"plist"]; NSArray *dataArr = [[NSArray alloc] initWithContentsOfFile:plistPath]; //将所有数据分为三组 NSMutableArray *arr1 = [NSMutableArray array]; NSMutableArray *arr2 = [NSMutableArray array]; NSMutableArray *arr3 = [NSMutableArray array]; dict = [NSMutableDictionary dictionary]; [dict setObject:arr1 forKey:@"Group1"]; [dict setObject:arr2 forKey:@"Group2"]; [dict setObject:arr3 forKey:@"Group3"]; //设置划分数据的依据,即根据index分三组,index为0-1的为第一组,2-4为第二组,5为第三组 for(NSInteger index = 0; index < [dataArr count]; index++){ NSDictionary *item = [dataArr objectAtIndex:index]; if(index<2){ [arr1 addObject:item]; } else if(index>=2&&index<5){ [arr2 addObject:item]; } else if(index>=5){ [arr3 addObject:item]; } } }
3.初始化TableView
//分为多少个分组 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return [[dict allKeys] count]; } //每个分组的数据单元个数 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { switch(section) { case 0: { return [[dict objectForKey:@"Group1"] count]; } case 1: { return [[dict objectForKey:@"Group2"] count]; } case 2: { return [[dict objectForKey:@"Group3"] count]; } } return 0; } //分组的标题,不实现下面的方法,不显示分组标题 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section { //dict allKeys取出的key arr无顺序,需进行排序 NSArray *arr = [[dict allKeys] sortedArrayUsingSelector:@selector(compare:)]; return [arr objectAtIndex:section]; } //列表右侧的索引提示,不实现下面的方法,不显示右侧索引 -(NSArray *) sectionIndexTitlesForTableView: (UITableView *) tableView { //dict allKeys取出的key arr无顺序,需进行排序 NSArray *arr = [[dict allKeys] sortedArrayUsingSelector:@selector(compare:)]; return arr; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *CellIdentifier = @"myTableCell"; UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; NSUInteger row = [indexPath row]; NSUInteger section = [indexPath section]; NSArray *arr; switch (section) { case 0: arr = [dict objectForKey:@"Group1"]; break; case 1: arr = [dict objectForKey:@"Group2"]; break; case 2: arr = [dict objectForKey:@"Group3"]; break; default: break; } NSDictionary *rowDict = [arr objectAtIndex:row]; cell.textLabel.text = [rowDict objectForKey:@"itemName"]; NSLog(@"cell.label.text = %@",[rowDict objectForKey:@"itemName"]); NSString *imagePath = [rowDict objectForKey:@"itemImagePath"]; cell.imageView.image = [UIImage imageNamed:imagePath]; NSLog(@"cell.image.image = %@",imagePath); cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell; } //选中Cell响应事件 - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{ [tableView deselectRowAtIndexPath:indexPath animated:YES];//选中后的反显颜色即刻消失 NSUInteger row = [indexPath row]; NSUInteger section = [indexPath section]; NSArray *arr; switch (section) { case 0: arr = [dict objectForKey:@"Group1"]; break; case 1: arr = [dict objectForKey:@"Group2"]; break; case 2: arr = [dict objectForKey:@"Group3"]; break; default: break; } NSDictionary *rowDict = [arr objectAtIndex:row]; NSString *userName = [rowDict objectForKey:@"itemName"]; NSLog(@"userName=%@",userName); }
相关推荐
在iOS开发中,轮播视图(Carousel View)是一种常见的用户界面组件,它允许用户以循环滚动的方式展示一系列图片或内容。在这个名为“iOS 轮播视图 demo”的项目中,开发者提供了一个用Objective-C编写的广告轮播视图...
在iOS开发中,集合视图(UICollectionView)是一个强大的控件,用于展示大量数据,具有高度可定制性。这个“ios-集合视图简单自定义布局.zip”文件包含了一个名为"CollectionLayerDemo"的示例项目,它展示了如何...
在iOS开发中,表视图(UITableView)是用于展示数据的常见组件,它允许用户滚动浏览条目并进行交互。本教程将深入探讨如何在iOS应用中实现自定义单元格,并从数据库中读取数据来填充这些单元格,以创建一个功能丰富...
2. 设置代理:遵循 DCCycleScrollViewDataSource 和 DCCycleScrollViewDelegate 协议,实现必要的方法,如获取轮播图数量、获取特定索引的视图等。 3. 自定义行为:如果需要自定义滚动速度、自动滚动间隔、点击回调...
在iOS开发中,滚动视图(UIScrollView)是十分常见且重要的控件,它允许用户查看超过屏幕大小的内容。本项目“ios-IOS 滚动视图加点击事件的封装”着重于解决如何在一个循环滚动视图中添加点击事件,并进行有效封装...
在iOS开发中,UITableView是一种非常重要的视图组件,它用于展示数据列表,广泛应用于各种应用场景,如联系人列表、消息列表等。这个“iOS-使用表格视图UITableView”项目可能是为了帮助开发者熟悉如何在实际应用中...
UITableView是iOS中用于展示列表数据的主要视图,它允许数据按组分隔,并提供侧边索引以便快速跳转到特定组。这里的防微信通讯录索引就是对这个功能的一种模仿和优化。 2. **自定义索引视图**: 微信通讯录索引的...
- `carousel:viewForItemAtIndex:reusingView:`方法用于返回每个项目视图,可以根据索引值动态设置视图内容。 6. **性能优化** - iCarousel支持缓存策略,可以有效减少内存占用和提高滚动性能,通过合理配置视图...
"ios带索引的列表"指的是利用UITableView并添加索引来实现高效的浏览体验。这种索引通常位于列表的右侧,允许用户快速跳转到以特定字母开头的项目,极大地提升了用户体验。 首先,我们要理解UITableView的基本结构...
当我们谈论“iOS tableView 索引”时,通常指的是为tableView添加一个侧边索引,以便用户能快速浏览和跳转到列表中的特定部分。 侧边索引,也称为section index或快速索引,通常显示在tableView的右侧,以字母顺序...
本资源提供的"IOS开发-TableView表视图基础 源码"旨在帮助开发者掌握UITableView的基本使用方法和核心概念。 1. **UITableView介绍** UITableView是一个用于展示动态数据的滚动视图,它可以显示一行行的数据,每个...
4. 分组头部的交互:如果需要响应用户的触摸事件,可以在自定义的视图中添加手势识别器,然后在相应的代理方法中处理。 总结来说,这个压缩包中的"UitableViewIndexes"文件可能包含了一些示例代码或资源,用于演示...
在iOS开发中,创建一个自动循环滚动的视图可以极大地增强用户体验,特别是在展示广告轮播、产品列表或者图片滑动等场景。这个功能通常通过自定义`UIScrollView`或使用第三方库来实现。以下是对"iOS 自动循环滚动视图...
这个“IOS应用源码之【框架】带拼音索引的全国城市选择代码.rar”就是一个很好的解决方案,它提供了一个带有拼音索引的全国城市选择器,使用户能够快速找到并选择所需的城市。 首先,我们要理解这个源码的核心概念...
"ios-tableview 动态添加.zip"这个压缩包很可能包含了一个示例项目,演示如何在运行时动态地向UITableView添加数据。在这里,我们将深入探讨在iOS应用中动态加载UITableView的相关知识点。 首先,UITableView的动态...
本资源"IOS应用源码之高温地图视图FHeatMap.zip"提供了一个专为iOS设计的高温地图视图实现,名为"FHeatMap"。这个开源项目可以帮助开发者更好地理解和实现自定义地图渲染,特别是在显示热度数据、地理信息或者气象...
在iOS开发中,分段控制器(Segmented Control)是一种常见的用户界面元素,它允许用户在多个视图或功能之间进行切换。"ios-segment切换视图.zip" 是一个示例项目,展示了如何利用分段控制器在不同的视图之间进行平滑...
本示例项目"ios-搜索框封装,并且右侧索引实现相应位置展示.zip"着重于如何封装一个自定义的搜索框,并且在搜索框右侧添加一个索引条,以实现用户滚动时索引与内容对应显示的功能。下面我们将详细探讨这一技术实现。...
- 通常滑动视图切换会与数据模型紧密结合,比如一个数组存储了所有视图控制器的引用或对应的数据,滑动时根据索引来加载相应的视图控制器。 7. **适配器模式**: - 可以使用适配器模式(Adapter Pattern)将数据...
【移动软件开发-3期(KC015) 表视图 教学设计】文档主要涉及iOS应用开发中的表视图(UITableView)及其相关知识,这是iOS开发中不可或缺的一部分。表视图是一种用于展示数据列表的视图,通常包含多个层次的数据,如...