05-UIKit(UITableViewController)
目录:
一、UITableViewController(表视图控制器)
一、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)的更多相关文章
- 05 redis(进阶)
redis 阶段一.认识redis 1.什么是redis Redis是由意大利人Salvatore Sanfilippo(网名:antirez)开发的一款内存高速缓存数据库.Redis全称为:Remo ...
- iOS--通讯录(UITableViewController)
本文主要实现通讯录的部分功能(分组名.索引.分组的组名)等等功能: 废话不多说了,先上效果图: 在工程中需要导入一个plist文件,文件图如图: 工程目录文件如图: 工程程序如图所示: RootTab ...
- iOS--(UITableViewCell)、(UITableViewController)微信个人主页
本文主要实现了微信的个人主页的设置: 目录文件如下: 实现代码如下: RootTableViewController.h #import <UIKit/UIKit.h> @interfac ...
- scala 学习笔记(05) OOP(中)灵活的trait
trait -- 不仅仅只是接口! 接上回继续,scala是一个非常有想法的语言,从接口的设计上就可以发现它的与众不同.scala中与java的接口最接近的概念是trait,见下面的代码: packa ...
- ⑤ 设计模式的艺术-05.原型(Prototype)模式
场景 思考一下:克隆技术是怎么样的过程? 克隆羊多利大家还记得吗? javascript语言中的,继承怎么实现?那里面也有prototype,大家还记得吗? 原型模式 通过new产生一个对象需要非常繁 ...
- 《数据结构与算法之美》 <05>链表(下):如何轻松写出正确的链表代码?
想要写好链表代码并不是容易的事儿,尤其是那些复杂的链表操作,比如链表反转.有序链表合并等,写的时候非常容易出错.从我上百场面试的经验来看,能把“链表反转”这几行代码写对的人不足 10%. 为什么链表代 ...
- 【原】AFNetworking源码阅读(一)
[原]AFNetworking源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 AFNetworking版本:3.0.4 由于我平常并没有经常使用AFNetw ...
- 【AFNetworking】AFNetworking源码阅读(一)
1. 前言 2. iOS Example代码结构 3.AFNetworkActivityIndicatorManager 4. UIRefreshControl+AFNetworking 5. AFN ...
- iOS学习——ViewController(六)
ViewController是iOS应用程序中重要的部分,是应用程序数据和视图之间的重要桥梁,ViewController管理应用中的众多视图. iOS的SDK中提供很多原生ViewControlle ...
随机推荐
- levelDB缓存实现
leveldb的缓存机制 leveldb采用LRU机制, 利用键的哈希值前n位作为索引, 将要插入的键值对分派到指定的缓存区, 当缓存区的使用率大于总容量后, 优先淘汰最近最少使用的缓存, 独立的缓存 ...
- C++之对象存储空间_对象模型
C++编译器如何完成面向对象理论向计算机程序的转化 #include<stdio.h>//////c++对象模型和结构体一样 class Test { ...
- JavaSE学习总结第20天_IO流2
20.01 递归概述和注意事项 递归:方法定义中调用方法本身的现象 递归注意事项: 1.要有出口,否则就是死递归 2.次数不能太多,否则就内存溢出 3.构造方法不能递归使用 20.02 递归求 ...
- C函数调用与栈
这篇blog试图说明这么一个问题,当一个c函数被调用时,一个栈帧(stack frame)是如何被建立,又如何被消除的.这些细节跟操作系统平台及编译器的实现有关,下面的描述是针对运行在Linux的gc ...
- 补全aaz288 可能有问题的过程 P_COMPL_AAZ288
补全aaz288 可能有问题的过程: /* add by weiyongle 20160623 失地农民补足aaz288,针对早期导出的数据(只适用于江安县) 经测试:江安县 江安县个体劳动者 这个单 ...
- Ecmall系统自带的分页功能使用
在控制器如果没有定义相关模型,直接使用sql语句的话,直接使用如下语句. 即: public $db; $this->db = &db(); //然后开始使用分页类 $sql='sele ...
- Gsoap 使用心得 2
Gsoap 返回图片byte的困惑 前些日子刚使用gsoap将二进制文件上传(服务期端使用c# wcf 编写),上传功能实现没 ...
- struts.xml的配置
<?xml version="1.0" encoding="UTF-8"?> <!--第一行必须这样写,这句话必须放在第一行--> &l ...
- cocos2d-x游戏开发系列教程-超级玛丽09-怪物激活与移动
在游戏中,很多怪物本身是会移动的,这里主要有蘑菇怪,乌龟等. 说起怪物的移动,首先在游戏里先要考虑怪物的抽象和设计. 在CMMonster.h中,有个类CMMonsterBasic,这个类抽象了所有的 ...
- Part Acquisition(spfa输出路径)
Part Acquisition Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4080 Accepted: 1742 ...