UIday07

1.UITableViewController组成

UITableViewController中的View类型是UITableView。

+tableView : UITableView

+Table Header 表头

+Section 分区

+Section Header分区头

+Row 行(Cell)

+Section Footer分区尾

+Table Footer 表尾

表头、表尾、分区头、分区尾都可以没有。

TableView 有两种Style:

Plain: 普通Style,只有一个分区。

Group: 组,有多个分区。

2.UITableView两个委托

数据源 是TableView显示数据的来源。

.dataSource : id<UITableViewDataSource>

代理对象 处理一些数据源之外的其它事项,事件触发。

.delegate : id<UITableViewDelegate>

3.UITableView重的问题

三问:(显示)

a.你有几个分区

numberOfSectionsInTableView

b.每个分区有几行

numberOfRowsInSection

c.每行的内容是什么

cellForRowAtIndexPath

4.创建一个UITableViewController

使用步骤:(自动生成)

a.继承UITableViewController

b.实现三问

使用步骤:(xib手动生成)

a.创建UIViewController

b.拖拽一个UITableView到父视图中

c.将VC设置为被委托对象

<1>遵守协议(UITableViewDataSource)

<2>实现方法(三问)

<3>委托对象与被委托对象建立关联(连线)

使用步骤:(code手动生成)

a.创建UIViewController

b.手动创建UITableView对象(code)

c.将VC设置为被委托对象

<1>遵守协议(UITableViewDataSource)

<2>实现方法(三问)

<3>委托对象与被委托对象建立关联

(tv.dataSource = self)

5.多分区的使用

每个分区有几行 参数1:事件源 参数2:区分不同的分区

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

注:要将UITableView的Style改成Grouped。

6.区分多行 indexPath

NSIndexPath是一种集合(保存多维数组)描述数据关系。

用来存储路径。例:描述分区行->Cell

.section 描述哪个分区

.row 描述此分区的哪一行

7.模型层与View层的关联

 

练习:

TRPerson -> name

zhangsan

lisi

wangwu

zhaoliu

qianqi

 

8.UITableViewCell类

8.1 是什么

TableView中每一行就是一个UITableViewCell类型的对象。UITableView其实是UIView的子类,它是一个视图。

8.2 Cell中的属性

UITableViewCell视图有以下子视图

.textLabel : UILabel 用于在Cell上显示文字内容

.detailTextLabel : UILabel 用于在Cell上显示详细内容

.imageView : UIImageView 用于图片

8.3 Cell显示的样式

Cell的style(系统提供的) initWithStyle

Default:默认,不显示详细信息

Value1:左右显示主要信息和详细信息,显示图片信息

Value2:居中显示详细信息,不显示图片信息

Subtitle:可以显示详细信息,详细信息另起一行

也可以自定义Cell

8.4 Cell的性能(Cell的重用)

(1)第一种重用方式

tableView在运行期间,出了界面的Cell并不会释放,而是放到了tableView中的队列中,所以,需要在创建Cell之前先试着从此队列中去拿已经存在的Cell对象,如果能拿到就不需要创建,而是重用Cell对象。

(2)***第二种重用方式

向tableView“注册”一个重用的Cell对象,注册后如果向tableView索要队列中的对象时,如果没有队列中没有空闲的Cell对象,tableView会自动帮我们创建一个并返回,这样可以确保dequeue方法一定会返回一个Cell对象供我们使用。

使用步骤:

<1>注册

- (void)viewDidLoad

{[self.tableView registerClass:[UITableViewCell classforCellReuseIdentifier:CellIdenitifier]; }

<2>直接去队列里面取

UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdenitifier];

8.5 一向应(答)

处理相应的事件方法。

遵守一个协议(UITableViewDelegate)

实现方法 didSelectRowAtIndexPath

例:点击某一个Cell,跳转到详细信息界面。

1)创建一个详细信息界面

2)传值

将选中Cell的信息传值给新的界面

3)push一个新的界面

 

作业:

1.一个列表信息

(图片 城市 人口)(TVC)->点击->显示详细信息(VC)

  图     北京   2000                 图

城市:北京

人口:2000

2.一个列表信息

城市(TVC)  ->点击->     区(TVC)

北京                          海淀区

上海   朝阳区

广州   丰台区

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值