一、基本知识点

UITableView表格视图,是一个可以滚动的界面(理解为垂直滚动的UIScrollView),可展示多行数据,没有行数的限制,只能有一列。
使用UITableView:
1、展示信息,显示大量的列表数据
2、导航
通常选择单元格导航至另一界面。主界面是tableview,通常是导航界面(nav)的根视图,用户轻击表格中的内容,从而进入改选项的详细界面(完整信息)
 
一、创建UITableView有两种样式
1、 UITableView *tableview = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStylePlain];//设置样式
2、 UITableView *tableview1 = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];//设置样式
3、设置相关属性
tableview.rowHeight = 80;//行高
    tableview.separatorStyle = UITableViewCellSeparatorStyleSingleLine;//分割线样式
    tableview.separatorColor = [UIColor greenColor];//分割线颜色
UIImageView *imageview = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"1.jpg"]];
    tableview.backgroundView = imageview;//设置背景图
//[tableview addSubview:imageview];//也可以这样添加
UIView *header = [[UIView alloc]initWithFrame:CGRectMake(10, 10, 0, 20)];
    tableview.tableHeaderView = header;//tableView顶部视图,其frame只有高有效
tableview.dataSource = self;//设置数据源
    tableview.delegate = self;
    tableview.tableFooterView = [[UIView alloc]init];//去掉线
    [self.view addSubview:tableview];
4、代理方法
-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 1;//设置table组数,默认是1,因此当只有一个分组时可省略
}

-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
//    if (section == 0) {
//        return 2;
//    }else if (section == 1) {
//        return 6;
//    }
    return 5;//设置每行的行数
}
//设置每行对应的cell
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{//indexPath包含了第几组:indexPath.section 和第几行:indexPath.row
   
    static NSString *identifier = @"cell";//重用机制标识
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];//根据重用标识,找到重用池着对应的cell
    if (cell == nil) {

        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];//创建一个cell,设置其样式和标识
 
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:identifier];//此处更改UITableViewCellStyleSubtitle样式,可显示不同的风格
NSArray *arr = @[@"王",@"杨",@"韩"];
        cell.detailTextLabel.text = arr[indexPath.row];//添加字符串
 
        cell.textLabel.text = [NSString stringWithFormat:@"第%zi行,第%zi组",indexPath.row,indexPath.section];//设置cell的文本信息
        cell.imageView.image = [UIImage imageNamed:@"2.jpg"];
    }
    return cell;
}
 
二、UITableView代理方法及应用
#import "ViewController.h"
@interface ViewController ()<UITableViewDelegate,UITableViewDataSource>
@end
@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    UITableView *_tableview = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped];
    _tableview.delegate = self;
    _tableview.dataSource = self;
    //_tableview.rowHeight = 80;//设置行高
    //_tableview.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
    [self.view addSubview:_tableview];
 
}
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{
    return 8;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
    if (section == 0) {
        return 4;
    }else if (section == 2) {
        return 2;
    }
    return 40;
}
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    //static NSString *ident = @"cell";//会导致重用机制有bug
   NSString *ident = [NSString stringWithFormat:@"%zi,%zi",indexPath.section,indexPath.row];//解决重用机制bug可用这种方法//给每行设置不同的标识
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ident];
//    static int num;
//    NSLog(@"%d",num++);
    if (cell == nil) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:ident];
        //cell.textLabel.text = nil;//先清理,再使用
    }
    cell.textLabel.text = [NSString stringWithFormat:@"%zi组,%zi行",indexPath.section,indexPath.row];
    cell.detailTextLabel.text = @"详细信息";
   
    if (indexPath.section == 0 && indexPath.row == 0) {
        cell.imageView.image = [UIImage imageNamed:@"1.jpg"];
    }
    if (indexPath.section == 2 && indexPath.row == 0) {
        cell.imageView.image = [UIImage imageNamed:@"2.jpg"];
    }
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;//提示用户可点,点击之后跳至下级界面

//cell.accessoryType = UITableViewCellAccessoryDetailDisclosureButton;//提示用户可点,点击按钮(叹号)会有相关提示弹出,点击cell之后跳至下级界面

//cell.accessoryType = UITableViewCellAccessoryCheckmark;//对勾
    //cell.accessoryType = UITableViewCellAccessoryDetailButton;//提示用户可点,点击按钮(叹号)会有相关提示弹出
    return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
    //每组顶部视图的高度
    return 20;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
    //自定义每组头视图
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 40 )];
    view.backgroundColor = [UIColor redColor];
    return view;
}
-(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
    //自定义尾部视图
    UIView *view = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 200, 80)];
    view.backgroundColor = [UIColor greenColor];
    return view;
}
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
    return 30;
}

//-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
//    //设置每行的高度
//    if (indexPath.row = 0) {
//        return 80;
//    }
//    return 40;

//}
 

UITableView表格视图、UITableView代理方法及应用的更多相关文章

  1. iOS:UITableView表格视图控件

    UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格)    对表格的操作主要 ...

  2. iOS:分组的表格视图UITableView,可以折叠和展开

    虽然表格视图可以分组,但是如果分组后,每一行的内容太多,往后翻看起来比较的麻烦.为了解决这个麻烦,可以将分组的行折叠和展开.折叠时,行内容就会隐藏起来:展开时,行内容就会显示出来. 折叠时: 展开后: ...

  3. iOS:带主标题、副标题、图像类型的表格视图UITableView

    制作一个通讯录,包括姓名.电话.头像,将表格视图类型设置为UITableViewCellStyleSubtitle 效果图: //创建一个联系人的类,初始化数据 在视图控制器中实现表格内容的显示 #i ...

  4. [Xcode 实际操作]五、使用表格-(7)UITableView单元格间隔背景色

    目录:[Swift]Xcode实际操作 本文将演示如何给表格设置间隔的背景颜色. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首先 ...

  5. [Xcode 实际操作]五、使用表格-(6)UITableView滑动到指定单元格

    目录:[Swift]Xcode实际操作 本文将演示如何使表格滑动到指定的索引路径. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKit //首 ...

  6. UITableView表视图以及重建机制

    表视图UITableView   表视图UITableView,是IOS中最重要的视图,随处可见 表视图通常用来管理一组具有相同数据结构的数据 UITableView继承自UIScrollView,所 ...

  7. UITableView的全部属性、方法以及代理方法执行顺序,看过之后肯定有收获---董鑫

    UITableView-------表视图--继承UIScrollView并遵守NSCoding协议 属性 frame-------------设置控件的位置和大小 backgroundColor-- ...

  8. UITableView的常用属性和代理方法

    以下是近期总结的关于tableView的一些属性和代理方法,以及一些常见的问题,现汇总如下,今后还会持续更新,请继续关注:   tableView 的头部和尾部视图属性: UISwitch *foot ...

  9. IOS UITableView的代理方法详解

    一.UITableViewDataSourc(数据源代理) 1.必须实现的回调方法 返回每个分区的行数 - (NSInteger)tableView:(UITableView *)tableView ...

随机推荐

  1. windows下PHP5.5.6+Apache2.4.7配置

    本文主要阐述在windows8及win8.1 环境下搭建PHP5.5.6+Apache2.4.7. 1.软件准备 apache 2.4.7:http://pan.baidu.com/s/1iUPif ...

  2. Java IO流体系中常用的流分类

    Java输入/输出流体系中常用的流分类(表内容来自java疯狂讲义) 注:下表中带下划线的是抽象类,不能创建对象.粗体部分是节点流,其他就是常用的处理流. 流分类 使用分类 字节输入流 字节输出流 字 ...

  3. vagrant系列教程(四):vagrant搭建redis与redis的监控程序redis-stat(转)

    上一篇php7环境的搭建 真是火爆,仅仅两天时间,就破了我之前swagger系列的一片文章,看来,大家对搭建环境真是情有独钟. 为了访问量,我今天再来一篇Redis的搭建.当然不能仅仅是redis的搭 ...

  4. WPF 制作聊天窗口获取历史聊天记录

    腾讯从QQ2013版起开始在聊天记录里添加了历史记录查看功能,个人聊天窗口可以点击最上边的‘查看历史消息’,而群组里的未读消息可以通过滚动鼠标中键或者拖动滚动条加载更多消息,那这个用wpf怎么实现呢? ...

  5. openstackM版本常见问题汇总

    汇总下常见的问题以及解释下一些比较容易让人萌的参数配置等等 问题汇总1.使用纯文本模式进行复制粘贴,打死不要用word!!!可以解决绝大多数问题,如果你依然执迷不悟,那么就好自为之吧 2.创建路由器时 ...

  6. 使用 RecyclerView

    使用 RecyclerView android RecyclerView tutorial 概述 与 ListView 的对比 RecyclerView 的组件 LayoutManager Recyc ...

  7. PHP魔法方法的使用

    1.__get / __set 当类没有要存取的属性时,就调用这两个函数 $obj = new IMooc\Object();$obj->title = "hello";ec ...

  8. temp--test audio micphone

    DWORD CALLBACK waveInProc(HWAVEIN hWaveIn, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwPara ...

  9. 技术英文单词贴--W

    W widget 小工具,小部件

  10. Cable master poj1064(二分)

    http://poj.org/problem?id=1064 题意:共有n段绳子,要求总共被分为k段.问在符合题意的前提下,每段长最大是多少? #include <iostream> #i ...