目录:

一、UITableViewController(表视图控制器)

二、委托协议

三、tableview工作过程(三问一响应)

四、UITableViewCell

回到顶部

一、UITableViewController(表视图控制器)

1 table:ios中的表格指一维半的表格,一行一列,而一列又分多个区

2 最常用的一个视图控制器,用于按照列表的方式显示和操作大量的数据时使用

3 好处,布局管理,不需要计算坐标,自动判断事件,自动进行内存管理,自动设置数据值。

4 创建UITableViewController

新建一个分类,继承自UITableViewController

5  tableview的基本信息

uiviewcontroller  ->  uiview self.view

uitableviewcontroller ->uitableview self.tableview

tableview style : plain 普通表视图group分组表视图

separator 行间分隔符

内部结构:

table view的内部结构

table view表头

section分区 section header分区头 rows行

section分区尾

table footer表尾

有些属性可以点.出来

回到顶部

二、委托协议:

数据源协议UITableViewDataSource,事件处理协议UITableViewDelegate,实现协议,会让我们自己的tableviewcontroller对象来遵守这两个协议

DataSource中的方法

//返回区域数

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

return 3;

}

//返回区域行数 多次调用  每个区域都会调 有3个区就调3次

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

if (section == 0) {

return 3;

}else if(section == 1){

return 5;

}else{

return 20;

}

}

NSIndexPath 保存区域section、行row,

回到顶部

三、tableview工作过程(三问一响应)

三问:几个区(区号从0开始),

每个区几行,nsindexpath本身是一个集合,uikit对类增加了分类,分类中有两个属性.section保存的区域是多少

.row保存的是行

每一行什么内容

//创建一个uitablecell 返回内容 没一行都会调用 有多少行调多少次
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    //cell重用
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
    }
    
    // Configure the cell...
    //1区的第0行text为heheh,其他为hello
    //section表示区域 row表示行数
    if (indexPath.section == 1 && indexPath.row == 0) {
        cell.textLabel.text = @"heheh";
    }else{
        //文本
        cell.textLabel.text = @"hello";
        //图片
        cell.imageView.image = [UIImage imageNamed:@"cellImage"];
        //详细信息
        cell.detailTextLabel.text = @"detail ,,,";//默认不显示,把73行initWithStyle值改为UITableViewCellStyleSubtitle
    }
    
    return cell;
}

NSIndexPath集合类,保存一些路径

回到顶部

四、UITableViewCell

1 是一个视图(uiview的子类)用来显示tableview中的一行

在此cell视图中,包含了一些子视图,textlabel(是uilable类型)imageview(是uiimageview类型)deatailtextlabel( 是uilabel类型)

2 cell的重用

cell的重用是如果显示14个textLabel下面的textlabel会重用这14个不会创建新的cell

从tabelview对象中指定的cell队列(identifier)中,获取可以重复使用的cell对象(现在没有显示在界面上的cell对象),如果没有找到可重复使用的,那返回nil,此时我们就创建新的cell对象,创建新cell对象时要指定identifier,当此cell出了界面后,会根据其identifier的值放到对应的队列中,以供将来重复使用

3
tableviewcontroller的model

model可以是数组可以是对象

detailTextLabel默认是不显示的,可以修改飘红的地方以显示

if (cell == nil) {

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];

}

//黄色目录里面的内容直接写文件名 不用写路径名

//蓝色目录里面的内容要写路径加文件名才能用

NSString *photoName = [NSString stringWithFormat:@"01%d.png",indexPath.row];

cell.imageView.image = [UIImage imageNamed:photoName];

作业:

1. 根据作业资源3,实现TMusic项目中的开始欢迎界面。

使用UIScrollView, UIImageView

关键代码:

scrollView.pagingEnabled = YES;

scrollView.contentSize = CGSizeMake(self.view.frame.size.width*5, self.view.frame.size.height);

注意各个对象的创建:

UIImage *image = [UIImage imageNamed:@"Welcome_3.0_1.jpg"];

UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

UIScrollView *scrollView = [[UIScrollView alloc] init];

2. 最后一个Demo,改:

数组中放的不再是NSString, 而是MXPhoto类的对象

MXPhoto类有三个属性:

图片的名字

图片的文件名

图片的简介

05-UIKit(UITableViewController)的更多相关文章

  1. 05 redis(进阶)

    redis 阶段一.认识redis 1.什么是redis Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Remo ...

  2. iOS--通讯录(UITableViewController)

    本文主要实现通讯录的部分功能(分组名.索引.分组的组名)等等功能: 废话不多说了,先上效果图: 在工程中需要导入一个plist文件,文件图如图: 工程目录文件如图: 工程程序如图所示: RootTab ...

  3. iOS--(UITableViewCell)、(UITableViewController)微信个人主页

    本文主要实现了微信的个人主页的设置: 目录文件如下: 实现代码如下: RootTableViewController.h #import <UIKit/UIKit.h> @interfac ...

  4. scala 学习笔记(05) OOP(中)灵活的trait

    trait -- 不仅仅只是接口! 接上回继续,scala是一个非常有想法的语言,从接口的设计上就可以发现它的与众不同.scala中与java的接口最接近的概念是trait,见下面的代码: packa ...

  5. ⑤ 设计模式的艺术-05.原型(Prototype)模式

    场景 思考一下:克隆技术是怎么样的过程? 克隆羊多利大家还记得吗? javascript语言中的,继承怎么实现?那里面也有prototype,大家还记得吗? 原型模式 通过new产生一个对象需要非常繁 ...

  6. 《数据结构与算法之美》 <05>链表(下):如何轻松写出正确的链表代码?

    想要写好链表代码并不是容易的事儿,尤其是那些复杂的链表操作,比如链表反转.有序链表合并等,写的时候非常容易出错.从我上百场面试的经验来看,能把“链表反转”这几行代码写对的人不足 10%. 为什么链表代 ...

  7. 【原】AFNetworking源码阅读(一)

    [原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...

  8. 【AFNetworking】AFNetworking源码阅读(一)

    1. 前言 2. iOS Example代码结构 3.AFNetworkActivityIndicatorManager 4. UIRefreshControl+AFNetworking 5. AFN ...

  9. iOS学习——ViewController(六)

    ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图. iOS的SDK中提供很多原生ViewControlle ...

随机推荐

  1. 【iOS开发-52】假设要模仿练习,怎样找到其它应用程序的icon、使用框架等资源?

    (1)在91助手等站点下载ipa格式的安装包.假设是安卓的应该是apk格式的.此处仅仅说iOS的.比方以下这个,下载到电脑. (2)然后,找到它,右击"归档",相当于解压. (3 ...

  2. 怎么取消 Windows Server 2012 RDP 限制每个用户只能进行一个会话

    在 Windows Server 2008 / 2008 R2 上,如果希望多个远程用户使用同一个账号同时访问服务器的 Remote Desktop(RDP),只需通过管理工具-远程桌面下的“远程桌面 ...

  3. CSS中的repeat

    Repeat-x是横向铺满,就是图片会横向重复,直到铺满. Repeat-y是纵向铺满,就是让图片纵向重复,直到铺满. 如果不想让重复,就直接为:no-repeat.

  4. levelDB缓存实现

    leveldb的缓存机制 leveldb采用LRU机制, 利用键的哈希值前n位作为索引, 将要插入的键值对分派到指定的缓存区, 当缓存区的使用率大于总容量后, 优先淘汰最近最少使用的缓存, 独立的缓存 ...

  5. PHP 8大安全函数

    1. mysql_real_escape_string() 这个函数对于在PHP中防止SQL注入攻击很有帮助,它对特殊的字符,像单引号和双引号,加上了“反斜杠”,确保用户的输入在用它去查询以前已经是安 ...

  6. zookeeper 安装

    Zookeeper安装 一.   下载zookeeper http://www.apache.org/dist/zookeeper/stable/ 二.   解压zookeeper.tar >& ...

  7. jQuery.form 中的 ajaxForm() 和 ajaxSubmit()

    官方例子  http://malsup.com/jquery/form/#ajaxForm官方API   http://malsup.com/jquery/form/#api中文API   http: ...

  8. WebRTC Demo - getUserMedia()

    WebRTC介绍 WebRTC提供三类API: MediaStream,即getUserMedia RTCPeerConnection RTCDataChannel getUserMedia已经由Ch ...

  9. English learning method ---学英语重中之重打通“任督二脉”

    漫漫十年艰辛路,英语学习之旅 曾经秉承“路漫漫其修远兮,吾将上下而求索”的信念,初一那年了解到原来(a b c d e f g) 不仅仅读作(啊,波,词,的,额,佛,哥),在英语的世界中它有另外的读法 ...

  10. java读取远程url图片,得到宽高

    链接地址:http://blog.sina.com.cn/s/blog_407a68fc0100nrb6.html import java.io.IOException;import java.awt ...