UI开发----UITableView表视图-1

//  Created By 郭仔   2015年04月22日22:12:47

// ==================================

时间都去哪了!!!!!!!

// ==================================

表视图 UITableView,iOS中最重要的视图,随处可?见。 表视图通常?用来管理?一组具有相同数据结构的数据。

UITableView继承?自UIScrollView,所以可以滚动

表视图的每?一条数据都是显?示在UITableViewCell对象中

表视图可以分区显?示数据,每个分区称为?一个section,每?一?行称为 row,编号都是从0开始。

DataSource数据源:

我们需要给tableView指定?一个数据源,它负责给tableView提供数据 需要实现协议中两个必须实现的?方法;

// ============

UITableView中每?一个单元格,被称为?一个cell

(UITableViewCell)。 系统预置了4种(枚举)样式的cell。 不同样式的cell包含的控件有细微差别。

// ============

UITableView的重用机制:

UITableView靠mutableSet来实现重?用功能

出屏幕的cell会被添加到mutableSet中,进?入屏幕的cell,先从set中 获取,如果获取不到,才创建?一个cell。在cell显?示之前,给cell赋上

相应的内容。

cell的reuseIdentifier是重?用的关键;

// =============

tableView默认是?一个分区,可以设置多个分区 tableView的plain、group样式决定分区的样式不同

每个分区可以设置区头区尾;

// =============

 UITableView * tableView = [[UITableView alloc]initWithFrame:CGRectMake(0, 50, 320, 400) style:UITableViewStylePlain];
  //  tableView.rowHeight = 50;
   // tableView.backgroundColor = [UIColor redColor];

  //  tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLineEtched;

    tableView.separatorColor = [UIColor redColor];

    tableView.dataSource = self;
  //  tableView.contentSize = CGSizeMake(1000, 1000);

    tableView.delegate = self;

    [self.view addSubview:tableView];
    [tableView release];

上面的代码实现了两个代理:dataSource和delegate。分别实现不同的方法;

#pragma mark - 设置某一行的高度
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.row == 0) {
        return 20;
    }
    else
    {
        return 50;
    }
}
#pragma mark - 设置区头自定义
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
    UIView * hear = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 50)];
    hear.backgroundColor = [UIColor redColor];
    return [hear autorelease];
}
#pragma mark - 设置区头高度
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
    return 50;
}
#pragma mark - 选中某行
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    // 页面切换
    if(indexPath.row == 0 && indexPath.section == 0)
    {
    SecondViewController * secondVC = [[SecondViewController alloc]init ];
    [self.navigationController pushViewController:secondVC animated:YES];
    [secondVC release];
    }

    NSLog(@"选中某一行");
}
// ====================================
#pragma mark - 每一个分区的行数
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    //NSLog(@"一共10行");
    return 2;
}

#pragma mark - 创建cell以及重用
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    /*
     tableView重用机制:当cell移除屏幕时,会被放到tableView的重用队列中,当显示cell时,tableView会根据重用标识在重用队列中取出cell,显示到视图上;

     如果tableView能够显示n个cell,那么在tableView创建时,会创建n个cell,当移动时(上一个cell移出一半,下一个cell显示一部分时)会创建第n+1个cell;
     如果移动很快,还可能创建n+2,n+3....个cell,因为移动过快,tableView还来不及从重用队列取出重用cell,就需要显示,所以要创建;

     */
    // 现查看是否有重用的cell,如果没有,需要创建,如果有,不需要创建。
    UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:@"AA"];//标识
    static int count = 0;
    // 如果没有,需要创建
    if (cell == nil) {
        cell = [[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"AA"]autorelease];
        cell.selectionStyle = UITableViewCellSelectionStyleNone;
        count ++;
        NSLog(@"创建%d个cell",count);
    }
    else
    {
        NSLog(@"重用");
    }
    cell.textLabel.text = @"郭仔来啦";
    UIImage *img = [UIImage imageNamed:@"bd_logo1.png"];
    cell.imageView.image = img;
    cell.selectionStyle = UITableViewCellSelectionStyleDefault;

//    NSLog(@"为每一行提供cell:row:--%d,section:--%d",indexPath.row,indexPath.section);
//    UIImage *img = [UIImage imageNamed:@"bd_logo1.png"];
////
////    UITableViewCell * cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"AA"];
////    cell.imageView.image = img;
//
////    UITableViewCell * cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"AA"];
//    // 设置cell的选中样式
//    cell.selectionStyle = UITableViewCellSelectionStyleDefault;
//    // 设置辅助视图样式
//    cell.accessoryType =  UITableViewCellAccessoryDisclosureIndicator;

//    if (indexPath.row%2 == 0) {
//        cell.textLabel.text  = @"A";
//    }
//    else
//    {
//        cell.textLabel.text = @"B";
//    }
//   // cell.textLabel.text = @"A";
//    cell.detailTextLabel.text = @"XXX";
//    cell.imageView.image = img;

    return cell;
}
#pragma mark ----------------
#pragma mark - 设置tableView分区数
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
    return 2;
}
#pragma mark - 设置区头标题
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
    if (section == 0) {
        return @"A";
    }
    else
    {
        return @"B";
    }
  //  return @"区头";
}
#pragma mark - 设置区尾
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    return @"区尾";
}
#pragma mark - 设置右侧分区索引
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
    NSArray * array = @[@"A",@"B"];
    return array;
}

以上代码是两种代理中部分方法的实现。

// =========================

小结:

tableView有2种样式:plain和grouped。 由datasource提供要显?示的数据,delegate提供辅助设置。 系统提供4中样式的cell。 tableView的重?用机制极?大提升了性能。

时间: 2025-01-02 16:53:13

UI开发----UITableView表视图-1的相关文章

UI学习笔记---第十一天UITableView表视图高级-自定义cell

自定义cell,多类型cell混合使用,cell自适应高度 自定义cell就是创建一个UITableViewCell的子类 把cell上的空间创建都封装在子类中,简化viewController中的代码 cell中的空间如何显示Model中的信息 cell中声明一个Model类型的属性,viewController中获取到Model对象后赋值给cell的Model属性 cell中重写Model的setter方法,把Model对象中的内容重新赋值给各个控件 M和V不直接通信,C负责M和V之间进行通

UI学习笔记---第十天UITableView表视图编辑

UITableView表视图编辑 表视图编辑的使用场景 当我们需要手动添加或者删除某条数据到tableView中的时候,就可以使用tableView编辑.比如微信 扣扣中删除和某人的通话 当我们需要手动调整单元格的顺序时,就可以通过tableView移动,移动单元格到指定位置 代理AppDelegate.m中代码 #import "AppDelegate.h" #import "RootViewController.h" @implementation AppDel

IOS开发之表视图(UITableView)

IOS开发之表视图(UITableView)的基本介绍(一) (一):UITableView的基本概念 1.在IOS开发中,表视图的应用十分广泛和普及.因此掌握表视图的用法显得非常重要.一般情况下对于数据的展示 我们都会选择表视图,比如通讯录和一些数据列表. 2.我们可以选择创建表视图也可以创建表视图控制器. (二)UITableView基本样式如下(1:UITableViewStylePlain(普通表视图),2:UITableViewStyleGroup(分组表视图)): (三)UITabl

UI第九讲.UITableView表视图创建,表视图的重用机制,表视图的相关配置方法

一.UITableView表视图创建 1>.基本属性: UITableView继承自UIScrollView,所以可以滚动          表视图的每一条数据都是显示在UITableViewCell对象中          表视图可以分区显示数据,每个分区称为一个section,每一行称为row,编号都是从0始 2>.重要用法: 最重要的是两个代理方法 <UITableViewDelegate,UITableViewDataSource>(其中必须实现的是 numberOfRow

UITableView, 表视图

UITableView, 表视图     样式     1.UITableViewStylePlain, 正常样式     2.UITableViewStyleGrouped,  分组样式 行高, 默认44 tableView.rowHeight = 80; 分隔线的颜色 tableView.separatorColor = [UIColor orangeColor]; tableView.separatorStyle = UITableViewCellSeparatorStyleSingleL

UITableView表视图

待完善 UITableView表视图,布布扣,bubuko.com

UITableView表视图以及重建机制

表视图UITableView 表视图UITableView,是IOS中最重要的视图,随处可见 表视图通常用来管理一组具有相同数据结构的数据 UITableView继承自UIScrollView,所以可以滚动 表视图的每一条数据都是显示在UITableViewCell对象中 表视图可以分区显示数据,每个分区称为一个section,每一行称为row,编号都是从0开始 tableView的样式是个枚举类型,有两种样式:plain和grouped可以根据在不同的使用场景下设置不同的样式 typedef

UI基础:UITableView表视图

表视图 UITableView,iOS中最重要的视图,随处可见. 表视图通常用来管理一组具有相同数据结构的数据. UITableView继承于UIScrollView,所以可以滚动 表视图的每条数据都是显示在UITableViewCell对象中 表视图可以分区显示数据,每个分区称为一个section,每一行称为 row,编号都是从0开始 表视图的创建 DataSource数据源 我们需要给tableView指定一个数据源,它负责给tableView提供数据. 需要实现协议中两个必须实现的方法.

IOS开发之表视图爱上CoreData

在接触到CoreData时,感觉就是苹果封装的一个ORM.CoreData负责在Model的实体和sqllite建立关联,数据模型的实体类就相当于Java中的JavaBean, 而CoreData的功能和JavaEE中的Hibernate的功能类似,最基本是两者都有通过对实体的操作来实现对数据库的CURD操作.CoreData中的上下文(managedObjectContext)就相当于Hibernate中的session对象, CoreData中的save操作就和Hibernate中的comm