`

iPhone开发常用控件之表TableView 【一】

    博客分类:
  • ios
ios 
阅读更多
实现的功能:演示表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,如下
#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;
    }
}
  • 大小: 163.3 KB
  • 大小: 224.2 KB
  • 大小: 320.6 KB
  • 大小: 118.7 KB
  • 大小: 53.4 KB
  • 大小: 178.8 KB
分享到:
评论

相关推荐

    iPhone开发【七】常用控件之表TableView

    在本教程中,我们将深入探讨“iPhone开发【七】常用控件之表TableView”,并结合提供的源代码来理解其工作原理。 首先,UITableView是一个可以滚动的视图,它可以显示一行行的数据,每行数据称为一个单元格...

    iphone开发TableView编辑

    在iPhone开发中,UITableView是一个非常重要的控件,用于展示列表数据。它提供了丰富的功能,包括但不限于数据展示、分组、排序、搜索、编辑等。在本文中,我们将深入探讨UITableView的编辑模式和移动模式,以及如何...

    iphone开发 Tableview QQ菜单

    总的来说,“iphone开发 Tableview QQ菜单”项目涵盖了iOS开发中的基本控件使用、数据源和代理协议的实现、用户交互处理以及UI设计等多个方面,是一个很好的学习和实践案例,可以帮助开发者掌握在iPhone应用中创建...

    iPhone开发-控件的使用源代码

    总的来说,"iPhone开发-控件的使用源代码"是一个非常实用的学习资源,它涵盖了iOS开发中控件的基础用法和实际应用,对于初学者和有经验的开发者来说都是很好的参考资料。通过深入研究和实践,我们可以提升对iPhone...

    iphone开发实例 TableView 02

    在iOS开发中,UITableView是应用最广泛的控件之一,它被用来展示列表或者表格数据,常见于各种App的用户界面,如联系人列表、邮件收件箱等。本实例“iphone开发实例 TableView 02”将重点讲解如何通过偏移量(Offset...

    IOS 类似iphone通讯录TableView的完整demo【附源码】

    在iOS开发中,UITableView是一种非常常见且重要的控件,它被广泛用于展示列表数据,比如在iPhone的通讯录中,用户就能看到一个清晰、可滚动的联系人列表。本示例是一个“类似iPhone通讯录的TableView完整Demo”,...

    iphone tableview的八种功能应用实例

    "iphone tableview的八种功能应用实例"是一个深入探讨如何利用TableView实现各种功能的实践教程。以下是对这八种功能的详细解释: 1. **基本列表展示**:TableView最基本的功能就是展示一个有序的数据列表。每个...

    iphone 实例 tableview 04

    在iOS开发中,UITableView是展示数据的常用控件,它以列表的形式呈现信息,而"iphone 实例 tableview 04 04-Cell Kinds.rar"是一个关于使用UITableView的实例,特别关注了不同类型的Cell。在这个项目中,开发者可能...

    iphone下拉刷新TableView

    而"iPhone下拉刷新TableView"这个话题则聚焦于为`UITableView`添加下拉刷新功能,这是一个常见的用户体验优化,让用户能够通过简单的手势更新列表中的数据。这种效果在许多应用中都能看到,比如QQ,用户下拉屏幕时,...

    《iphone3开发基础教程》PDF版本下载.txt

    为了帮助开发者快速构建功能丰富的应用程序,教程很可能会介绍各种常用的UI组件和控件,如Label、Button、TableView等,并指导如何使用它们来实现特定的功能。 #### 2.6 数据存储 数据管理是应用开发不可或缺的一...

    XCode IOS 在TableView中分段显示数据

    在标签中提到的“XCode IOS iPhone”,说明这是一个针对iOS设备的开发教程,而“Controller”则指的是我们使用的UITableViewController或UIViewController。 在文件列表中,有一个名为"Hello"的文件,这可能是项目...

    《Iphone开发基础教程》第八章 表视图简介(二)

    在iOS应用开发中,表视图(UITableView)是不可或缺的一部分,尤其在iPhone开发中更是频繁使用。本教程的第八章“表视图简介(二)”深入探讨了如何利用表视图来构建用户界面,提供了丰富的实践案例。下面将详细阐述...

    iOS数据库SQLite3基本操作并将内容显示在tableView中

    在iOS应用开发中,SQLite3是一个常用的轻量级数据库,它允许开发者存储和管理应用程序的数据。本教程将深入探讨SQLite3的基本操作,并演示如何将查询到的数据展示在UITableView上,这是iOS开发中常见的数据呈现方式...

    ios中tableview下拉更新效果例子

    在iOS开发中,UITableView是展示数据列表的主要控件,它具有强大的可定制性和灵活性。"ios中tableview下拉更新效果例子"是一个典型的iOS应用功能,允许用户通过下拉刷新来获取最新的数据。这种功能常见于新闻应用、...

    Iphone TableView 搜索

    在iOS开发中,UITableView是用于显示数据列表的关键组件,它为用户提供了一种可滚动的界面,用户可以在其中浏览和选择项目。"Iphone TableView 搜索"这个主题涉及到如何在UITableView中实现搜索功能,使得用户能够...

    IOS通讯录一样的TableView实现

    在iOS开发中,为了创建一个类似iPhone通讯录的界面,开发者通常会利用UITableView这一核心组件。这个场景下,我们不仅需要展示一系列联系人姓名,还要实现字母分组、滚动条显示字母列表以及点击字母跳转至对应分组的...

    仿造iPhone dTableView 接口开发的Android TableGroupView

    在Android中,ListView是一个常见的列表展示控件,但在实现更复杂的需求,如带有分组的表格视图时,我们可能需要对ListView进行定制或使用其他替代方案。 首先,我们需要理解dTableView在iOS中的工作原理。...

    iphone开发基础教程(1)

    《iPhone开发基础教程(1)》是一本专为初学者设计的指南,旨在引领读者进入iOS应用开发的世界。这本书深入浅出地介绍了iPhone应用程序开发的基础知识,包括必要的工具、编程语言以及开发流程。 首先,书中的核心...

    iPhone 开发实现 tweetie 的 pull-down-refresh

    标题 "iPhone 开发实现 tweetie 的 pull-down-refresh" 指的是在iOS应用开发中实现一个类似Tweetie应用的下拉刷新功能。Tweetie是一款早期的Twitter客户端,其下拉刷新设计深受用户喜爱,后来这一设计被广泛应用于...

    iOSUI基础控件常用方法探微

    ### iOS UI基础控件常用方法探微 #### 一、UIImageView 控件详解 **1.1 UIImageView 显示问题** 在 iOS 开发过程中,经常会遇到 UIImageView 的显示问题。默认情况下,若未设置 UIImageView 的尺寸,该控件将自动...

Global site tag (gtag.js) - Google Analytics