`
zhengjj_2009
  • 浏览: 153115 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

iOS UI笔记-TableView-02

 
阅读更多

    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-横向-TableView-Demo"就是一个这样的示例项目,它展示了如何在iOS应用中创建一个既能横向又能纵向滚动的表格视图。 这个Demo的核心是扩展UITableView的功能,使其能够处理横向数据。在标准的UITableView中,每...

    iOS开发 - 第02篇 - UI进阶 - 03 - TableView Cell

    在`iOS开发 - 第02篇 - UI进阶 - 03 - TableView Cell`中,我们将深入探讨以下知识点: 1. **UITableViewCell**:作为UITableView的基本单元,UITableViewCell是显示数据的最小元素。每个cell通常包含一个或多个...

    iOS开发 - 第02篇 - UI进阶 - 02 - TableView

    这篇教程“iOS开发 - 第02篇 - UI进阶 - 02 - TableView”将深入探讨如何使用UITableView来创建一个类似iPhone通讯录的应用,展示各种车标志的列表。 首先,UITableView是一个可滚动的控件,它允许用户通过上下滑动...

    ios-swift---tableview.zip

    本压缩包“ios-swift---tableview.zip”显然关注的是如何在Swift中使用UITableView来创建动态、可滚动的数据展示视图。UITableView是iOS应用开发中的一个核心组件,它允许开发者以列表形式展示大量数据,用户可以...

    ios-tableview-上拉加载更多

    综上所述,"ios-tableview-上拉加载更多"涉及到了UITableView的数据源和代理方法的使用、滚动事件监听、网络请求、UI反馈和性能优化等多个方面,这些都是iOS开发中非常重要的知识点。通过实践这些技术,开发者可以...

    ios-TableView-悬停.zip

    "ios-TableView-悬停.zip"这个压缩包可能包含了一个实现UITableView独特功能的示例,即“悬停”效果。在普通情况下,UITableView会在用户滚动时移除当前屏幕外的单元格,而“悬停”效果则是让某一行或某一列在滚动时...

    ios-Swift-tableVIew.zip

    本项目"ios-Swift-tableVIew.zip"显然聚焦于使用Swift和UITableView来创建自定义Cell,同时结合了Masnory进行约束布局,以实现灵活、适应性强的界面设计。以下是对这些知识点的详细讲解: 1. **Swift语言**:Swift...

    ios-tableView的多项选择删除.zip

    总的来说,"ios-tableView的多项选择删除.zip"项目涵盖了在iOS应用中实现tableView多选删除的核心步骤,包括开启多选模式、处理用户选择、展示选中状态以及实现删除功能。开发者可以根据自己的需求进行相应的扩展和...

    ios-Move-Delete-Insert-TableView.zip

    在iOS开发中,UITableView是一种非常重要的UI组件,用于展示数据列表。这个名为“ios-Move-Delete-Insert-TableView.zip”的资源包显然包含了关于如何在UITableView中实现添加、删除和移动表格行的教程或代码示例。...

    ios-TableView-条件筛选.zip

    在“ios-TableView-条件筛选.zip”这个压缩包中,包含了一个名为“ExampleWithTableView”的示例项目,它展示了如何在UITableView中实现简单的条件筛选功能。这种功能在许多应用程序中都非常常见,例如在电商应用中...

    IOS开发-TableView表视图基础 源码

    本资源提供的"IOS开发-TableView表视图基础 源码"旨在帮助开发者掌握UITableView的基本使用方法和核心概念。 1. **UITableView介绍** UITableView是一个用于展示动态数据的滚动视图,它可以显示一行行的数据,每个...

    ios-tableview编辑.zip

    当我们谈论"ios-tableview编辑.zip"时,很显然这个压缩包可能包含了一系列关于如何实现UITableView的编辑和删除功能的代码示例、教程或资源。在iOS应用中,允许用户编辑和删除表格内容能提升用户体验,使他们能够更...

    ios-tableview下拉图片放大.zip

    在iOS开发中,UITableView是一种常用的UI组件,用于展示列表数据。在某些设计中,我们可能会遇到这样的需求:当用户下拉表格时,顶部的图片会放大,形成一种动态的视觉效果。这个“ios-tableview下拉图片放大”的...

    ios-类似百度外卖首页---tableview内嵌套collectionview.zip

    在这个“ios-类似百度外卖首页---tableview内嵌套collectionview”的项目中,开发者通过代码抽离和分类的方式,实现了首页控制器的瘦身,提升了代码的可读性和可维护性。 首先,我们来详细解释这个标题所涉及的知识...

    ios-Tableview测试.zip

    "ios-Tableview测试.zip"中的项目可能是一个简单的示例,用于演示如何在iOS应用中有效地使用UITableView。TestTravelController很可能是一个实现了UITableViewDataSource和UITableViewDelegate协议的...

    ios-TableView的Cell上播放视频.zip

    这个“ios-TableView的Cell上播放视频.zip”资源可能包含了一个示例项目,用于演示如何在UITableView的每个单元格(Cell)中播放视频。以下是对这个主题的详细说明: 首先,为了在UITableView的Cell中播放视频,...

    ios-TableView.zip

    这个"ios-TableView.zip"文件很可能是包含了一些关于如何在iOS应用中使用TableView的示例代码或者教程资料。 TableView的核心概念与知识点包括: 1. UITableView类:作为iOS SDK中的主要视图类,UITableView负责...

    ios-tableView二级列表.zip

    在点击事件处理后,我们需要更新数据模型,然后调用`tableView.reloadData()`刷新界面,确保UI与数据同步。 7. **动画效果**: 为了提供更好的用户体验,可以在展开和收起二级列表时添加平滑的动画。可以利用`...

    ios-tableview 嵌套 悬停.zip

    而“ios-tableview 嵌套 悬停”这个项目,显然关注的是如何在UITableView中实现嵌套的效果,并且具备悬停功能。这个项目来源于GitHub上的开源库`ArtScrollTableView`,由LeeWongSnail开发,提供了高级的滚动和悬停...

    iOS-TableView入门示例

    这个入门示例将带你逐步了解如何在iOS应用中使用TableView,展示基础的数据,并进行更高级的定制。 首先,让我们了解一下UITableView的基本概念: 1. **UITableView**:它是苹果提供的一个类,用于创建和管理包含...

Global site tag (gtag.js) - Google Analytics