- 浏览: 542899 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
tangyunliang:
大哥你太历害了谢谢
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
u013015029:
LZ,请问下,在// 添加消息到聊天窗口 , 这里获取Ed ...
Android基于XMPP Smack Openfire开发IM【四】初步实现两个客户端通信 -
endual:
怎么保持会话,我搞不懂啊
Android基于XMPP Smack Openfire开发IM【一】登录openfire服务器 -
donala_zq:
显示:[2013-11-30 11:50:36 - Andro ...
android-----------新浪微博 -
donala_zq:
哥,运行不了啊
android-----------新浪微博
实现的功能:演示表TableView的使用方法
关键词:TableView
1、创建一个Single View Application工程,命名为:TableViewDemo,如下图
[img]
[/img]
2、修改ViewController.xib,添加一个Table View控件,连接操作,如下
[img]
[/img]
3、视图控制器ViewController,需要实现协议UITableViewDataSource、UITableViewDelegate中的必须实现的方法,
在工程目录依次展开Frameworks->UIKit.framework->Headers,然后打开UITableView.h,搜索找到协议UITableViewDataSource、UITableViewDelegate的定义,如下
[img]
[/img]
4、修改ViewController.h,如下
5、修改ViewController.m,如下
备注1、备注2,代码解释:1)表中的每一行都拥有一个子视图,即一个UITableViewCell类的实例
2)对于一个拥有大量数据的表,如果UITableView为表中的每一行都分配一个UITableViewCell的实例,而不管该行是否正在显示,这无疑将带来大量内容开销。当然,UITableView并不是这样设计的。
3)只有当前显示的行才被分配UITableViewCell的实例,因滚动操作已离开屏幕的表视图单元(UITableViewCell的实例)将被放置在一个可以被重用的单元序列中。
如果系统运行比较缓慢,表视图就从该序列中删除这些单元,以释放存储空间;
只要有可用的存储空间,表视图就会重新获取这些单元,以便以后再次使用。
4)//当一个表单视图滚出屏幕时,另一个表单视图就会从另一边滚动到屏幕上,如果滚动到屏幕上的新行重新使用从屏幕上滚动下来的那些单元格中的某一个单元格,系统就会避免与不断创建和释放那些视图相关的开销。
5)为了使用此机制,需要一个标识符(identifier)来标示可重用的单元格
6)表第一次初始化时肯定没有可重用的表单元,所以需要初始分配:
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myTableViewCellIdentifier];
reuseIdentifier参数即标示该表单元可重用的标示符
6、编译、运行,效果如下
[img]
[/img]
在使用UITableView的时候,UITableViewCell的高度可能要改变。改变行高有两种情况,第一种是改变所有的行高。第二种是改变特定行的行高。
第一种,改变所有行的行高。就是类似下面的效果。
[img]
[/img]
这里要使用UITableViewDelegate的方法:
第二种,如果要指定改变某个行的行高。就类似下面的效果。
[img]
[/img]
只要对上面的方法做一下修改如下:
关键词:TableView
1、创建一个Single View Application工程,命名为:TableViewDemo,如下图
[img]

[/img]
2、修改ViewController.xib,添加一个Table View控件,连接操作,如下
[img]

[/img]
3、视图控制器ViewController,需要实现协议UITableViewDataSource、UITableViewDelegate中的必须实现的方法,
在工程目录依次展开Frameworks->UIKit.framework->Headers,然后打开UITableView.h,搜索找到协议UITableViewDataSource、UITableViewDelegate的定义,如下
[img]

[/img]
4、修改ViewController.h,如下
#import <UIKit/UIKit.h> @interface ViewController : UIViewController @property(nonatomic,retain)NSMutableArray *apps; @end
5、修改ViewController.m,如下
#import "ViewController.h" @interface ViewController () @end @implementation ViewController @synthesize apps; - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //加载数据 [self loadData]; } //模拟加载数据 -(void)loadData{ apps = [[NSMutableArray alloc]init]; for(int i=0;i<8;i++){ [apps insertObject:[NSString stringWithFormat:@"App-%d",(i+1)] atIndex:i]; } } - (void)viewDidUnload { [super viewDidUnload]; apps = nil; // Release any retained subviews of the main view. } -(void)dealloc{ [super dealloc]; [apps release]; } - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown); } #pragma mark table view datasource methods //可选实现的方法,默认为1 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView;{ return 1; } //必须实现的方法 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ return [apps count]; } //必须实现的方法 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{ // NSString *myTableViewCellIdentifier = @"myTableViewCellIdentifier"; UITableViewCell *cell = [[UITableView alloc]dequeueReusableCellWithIdentifier:myTableViewCellIdentifier];//备注1 if(cell==nil){ cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myTableViewCellIdentifier]; //备注2 } NSString *imageName = [NSString stringWithFormat:@"%d",[indexPath row]+1]; //cell.image = [UIImage imageNamed:imageName]; //这种用法已经废弃 cell.imageView.image = [UIImage imageNamed:imageName]; cell.textLabel.text = [apps objectAtIndex:[indexPath row]]; cell.textLabel.textAlignment = UITextAlignmentLeft; cell.textLabel.font = [cell.textLabel.font fontWithSize:30]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell; } //可选实现的方法 - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section{ return @"Header"; } //可选实现的方法 - (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section{ return @"Footer"; } #pragma mark table view data delegate methods - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ return 50; } @end
备注1、备注2,代码解释:1)表中的每一行都拥有一个子视图,即一个UITableViewCell类的实例
2)对于一个拥有大量数据的表,如果UITableView为表中的每一行都分配一个UITableViewCell的实例,而不管该行是否正在显示,这无疑将带来大量内容开销。当然,UITableView并不是这样设计的。
3)只有当前显示的行才被分配UITableViewCell的实例,因滚动操作已离开屏幕的表视图单元(UITableViewCell的实例)将被放置在一个可以被重用的单元序列中。
如果系统运行比较缓慢,表视图就从该序列中删除这些单元,以释放存储空间;
只要有可用的存储空间,表视图就会重新获取这些单元,以便以后再次使用。
4)//当一个表单视图滚出屏幕时,另一个表单视图就会从另一边滚动到屏幕上,如果滚动到屏幕上的新行重新使用从屏幕上滚动下来的那些单元格中的某一个单元格,系统就会避免与不断创建和释放那些视图相关的开销。
5)为了使用此机制,需要一个标识符(identifier)来标示可重用的单元格
6)表第一次初始化时肯定没有可重用的表单元,所以需要初始分配:
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myTableViewCellIdentifier];
reuseIdentifier参数即标示该表单元可重用的标示符
6、编译、运行,效果如下
[img]

[/img]
在使用UITableView的时候,UITableViewCell的高度可能要改变。改变行高有两种情况,第一种是改变所有的行高。第二种是改变特定行的行高。
第一种,改变所有行的行高。就是类似下面的效果。
[img]

[/img]
这里要使用UITableViewDelegate的方法:
//设置rowHeight - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return 91.5; }
第二种,如果要指定改变某个行的行高。就类似下面的效果。
[img]

[/img]
只要对上面的方法做一下修改如下:
//设置rowHeight - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == 0 && indexPath.row == 0) { return 220; } else { return 40; } }
- TableViewDemo_3_.zip (214 KB)
- 下载次数: 2
发表评论
-
新风作浪博客学习(十九)在iOS虚拟键盘上添加动态隐藏按钮
2013-06-08 09:19 904为了给用户比较良好的交付,想在键盘上添加一个按钮,实时根据键盘 ... -
新风作浪博客学习(十八)openURL的使用(iOS调用系统电话、浏览器、地图、邮件等) .
2013-06-08 09:19 1030今天遇见一行代码实现打开一个网页,比起印象里的UIWebVie ... -
新风作浪博客学习(十七)UIImageView响应点击事件 .
2013-06-08 09:19 720有时候会遇到点击一张图片,然后让这张图片触发一个事件,或者是跳 ... -
新风作浪博客学习(十六)Navigation + Tab Bar 常用组合框架 .
2013-06-07 08:50 1290看到很多项目中都采用的是Navigation加Tab Bar组 ... -
新风作浪博客学习(十五)google地图定位小Demo .
2013-06-07 08:50 1178[img][/img]今天写的是一个简单功能的google地图 ... -
新风作浪博客学习(十四)怎样向iPhone模拟器中添加图片 .
2013-06-07 08:50 826在我们做项目中可能需要使用图库,模拟器是有图库的,但是如何像其 ... -
新风作浪博客学习(十三)表视图的分组分区和索引分区 .
2013-06-07 08:50 850本次实现的是表视图的分区和索引,代码和前面都差不多,主要还是代 ... -
新风作浪博客学习(十二)代码实现UITableViewCell表视图单元定制 .
2013-06-07 08:49 1031通常情况下我们会希望单元格UITableViewCell显示自 ... -
新风作浪博客学习(十一)UITableViewCell的标记、移动、删除、插入 .
2013-06-06 09:15 1152这篇文章是建立在 代码实现 UITableView与UITa ... -
新风作浪博客学习(十)代码实现 UITableView与UITableViewCell .
2013-06-06 09:14 1198我们常用的表格类视图就是用 UITableView与UITab ... -
新风作浪博客学习(九)两个UIPickerView控件间的数据依赖 .
2013-06-06 09:14 1092本篇实现功能是两个选取器的关联操作,滚动第一个滚轮第二个滚 ... -
新风作浪博客学习(八)代码实现UIPickerView .
2013-06-06 09:14 1321先说一下当个组件选取器,我们创建一个数组NSAray来保存选取 ... -
新风作浪博客学习(七)代码 实现UIDatePicker控件 和 Tab Bar 视图切换 .
2013-06-06 09:15 1133感觉代码写控件都一个理,先在ViewDidLoad中创建控件对 ... -
新风作浪博客学习(六)ios 视图切换翻页效果 .
2013-06-05 11:18 1071本文写的是视图切换,涉及到的内容有 1.实现代码添加Navi ... -
新风作浪博客学习(五)代码实现UISlider 和 UISwitch .
2013-02-18 09:15 1193本次实现的UISlider和UISwi ... -
新风作浪博客学习(四)把plist里数据显示在textField上 .
2013-02-18 09:15 933在代码实现Lable 、textFie ... -
新风作浪博客学习(三)NSBundle读取图片 plist文件和txt文件
2013-02-18 09:15 1766本文想简单介绍一下NSBundle读取图片到视图上,读取pli ... -
新风作浪博客学习(二)代码实现Lable 、textField创建界面以及键盘的处理
2013-02-18 09:15 1205今天写的是用代码实现一个简单界面,代码重复率比较高,可读性不是 ... -
新风作浪博客学习(一)plist文件读写操作
2013-02-18 09:14 1382文件plist 全名Property List,属性列表文件, ... -
GCDiscreetNotificationView提示视图
2013-06-05 11:17 568先看一下效果图: [img] ...
相关推荐
在本教程中,我们将深入探讨“iPhone开发【七】常用控件之表TableView”,并结合提供的源代码来理解其工作原理。 首先,UITableView是一个可以滚动的视图,它可以显示一行行的数据,每行数据称为一个单元格...
在iPhone开发中,UITableView是一个非常重要的控件,用于展示列表数据。它提供了丰富的功能,包括但不限于数据展示、分组、排序、搜索、编辑等。在本文中,我们将深入探讨UITableView的编辑模式和移动模式,以及如何...
总的来说,“iphone开发 Tableview QQ菜单”项目涵盖了iOS开发中的基本控件使用、数据源和代理协议的实现、用户交互处理以及UI设计等多个方面,是一个很好的学习和实践案例,可以帮助开发者掌握在iPhone应用中创建...
总的来说,"iPhone开发-控件的使用源代码"是一个非常实用的学习资源,它涵盖了iOS开发中控件的基础用法和实际应用,对于初学者和有经验的开发者来说都是很好的参考资料。通过深入研究和实践,我们可以提升对iPhone...
在iOS开发中,UITableView是应用最广泛的控件之一,它被用来展示列表或者表格数据,常见于各种App的用户界面,如联系人列表、邮件收件箱等。本实例“iphone开发实例 TableView 02”将重点讲解如何通过偏移量(Offset...
在iOS开发中,UITableView是一种非常常见且重要的控件,它被广泛用于展示列表数据,比如在iPhone的通讯录中,用户就能看到一个清晰、可滚动的联系人列表。本示例是一个“类似iPhone通讯录的TableView完整Demo”,...
"iphone tableview的八种功能应用实例"是一个深入探讨如何利用TableView实现各种功能的实践教程。以下是对这八种功能的详细解释: 1. **基本列表展示**:TableView最基本的功能就是展示一个有序的数据列表。每个...
在iOS开发中,UITableView是展示数据的常用控件,它以列表的形式呈现信息,而"iphone 实例 tableview 04 04-Cell Kinds.rar"是一个关于使用UITableView的实例,特别关注了不同类型的Cell。在这个项目中,开发者可能...
而"iPhone下拉刷新TableView"这个话题则聚焦于为`UITableView`添加下拉刷新功能,这是一个常见的用户体验优化,让用户能够通过简单的手势更新列表中的数据。这种效果在许多应用中都能看到,比如QQ,用户下拉屏幕时,...
为了帮助开发者快速构建功能丰富的应用程序,教程很可能会介绍各种常用的UI组件和控件,如Label、Button、TableView等,并指导如何使用它们来实现特定的功能。 #### 2.6 数据存储 数据管理是应用开发不可或缺的一...
在标签中提到的“XCode IOS iPhone”,说明这是一个针对iOS设备的开发教程,而“Controller”则指的是我们使用的UITableViewController或UIViewController。 在文件列表中,有一个名为"Hello"的文件,这可能是项目...
在iOS应用开发中,表视图(UITableView)是不可或缺的一部分,尤其在iPhone开发中更是频繁使用。本教程的第八章“表视图简介(二)”深入探讨了如何利用表视图来构建用户界面,提供了丰富的实践案例。下面将详细阐述...
在iOS应用开发中,SQLite3是一个常用的轻量级数据库,它允许开发者存储和管理应用程序的数据。本教程将深入探讨SQLite3的基本操作,并演示如何将查询到的数据展示在UITableView上,这是iOS开发中常见的数据呈现方式...
在iOS开发中,UITableView是展示数据列表的主要控件,它具有强大的可定制性和灵活性。"ios中tableview下拉更新效果例子"是一个典型的iOS应用功能,允许用户通过下拉刷新来获取最新的数据。这种功能常见于新闻应用、...
在iOS开发中,UITableView是用于显示数据列表的关键组件,它为用户提供了一种可滚动的界面,用户可以在其中浏览和选择项目。"Iphone TableView 搜索"这个主题涉及到如何在UITableView中实现搜索功能,使得用户能够...
在iOS开发中,为了创建一个类似iPhone通讯录的界面,开发者通常会利用UITableView这一核心组件。这个场景下,我们不仅需要展示一系列联系人姓名,还要实现字母分组、滚动条显示字母列表以及点击字母跳转至对应分组的...
在Android中,ListView是一个常见的列表展示控件,但在实现更复杂的需求,如带有分组的表格视图时,我们可能需要对ListView进行定制或使用其他替代方案。 首先,我们需要理解dTableView在iOS中的工作原理。...
《iPhone开发基础教程(1)》是一本专为初学者设计的指南,旨在引领读者进入iOS应用开发的世界。这本书深入浅出地介绍了iPhone应用程序开发的基础知识,包括必要的工具、编程语言以及开发流程。 首先,书中的核心...
标题 "iPhone 开发实现 tweetie 的 pull-down-refresh" 指的是在iOS应用开发中实现一个类似Tweetie应用的下拉刷新功能。Tweetie是一款早期的Twitter客户端,其下拉刷新设计深受用户喜爱,后来这一设计被广泛应用于...
### iOS UI基础控件常用方法探微 #### 一、UIImageView 控件详解 **1.1 UIImageView 显示问题** 在 iOS 开发过程中,经常会遇到 UIImageView 的显示问题。默认情况下,若未设置 UIImageView 的尺寸,该控件将自动...