IOS之UIKit_Day07

DAY07

回顾:

1》 UITableView

        1.一列多行

        2.表格的样式有两种:Plain和Group

        3. 包含的部分:

              +表头视图

                     +分区头

                     +分区内容

                     +分区尾

              +表尾视图

        4.使用步骤:

              a.在View中添加tableView

              b.设置当前的frame

              c.设置实例的委托 tableView.datasource=self  tableview.Delegate=self

              d.遵守协议< UITableViewDataSource,UITableViewDelegate >

              e.把tableView给当前控制的控制器视图

              f.实现三问一答

2》UITableViewController

       自己写一个类

       1.控制器自带一个tableView

       2.已经遵守了协议

       3.控制器已经成为自带的表视图的数据源代理和对象代理

       4.实现三问一答

———————————————————————————————————————-

1 多分区的表视图

2 NSIndexPath类型

       该类型描述的是一种路径,为了定位一个单元格的位置,需要两个值;每一个分区的内部排列规则都是从0开始的。

       属性:

              .section记录分区的分区号

              .row记录的是行在每个分区内的行号

3 表格其他属性

       3.1 表头视图 表尾视图

              一个表中只能有一个表头和表尾

              通过下列属性进行设置:

                     self.tableView.tableFooterView

                 self.tableView.tableHeaderView

       3.2 分区头 分区尾

              一个表格可以有多个分区头,分区尾 通过回答问题进行设置,分区头 分区尾可以是简单字符串也可以是复杂的UIView

-(NSString*)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section

-(NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section

 

-(UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section

-(UIView*)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section

 

4  UITableViewCell

       4.1 是什么?

              系统定义的单元格类型,表格中的每一个都是一个UITableViewCell的实例

       4.2 单元格具有系统提供的默认的样式

              系统提供了四种不同的样式摆放

四种样式:

UITableViewCell *cell=[[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue2

      reuseIdentifier:@"cell"];

               UITableViewCellStyleDefault,//默认的 简单单元格有一个文本 和一个可以选择的image View

               UITableViewCellStyleValue1,    //左对齐 文本在左边   cell.detailTextLabel    在右边对其并且颜色为blue

               UITableViewCellStyleValue2,//右对齐 文本在右边cell.detailTextLabel    在左边对其并且颜色为blue

               UITableViewCellStyleSubtitle//文本在左边对其cell.detailTextLabel    在文本的下方颜色为blue

       4.3 单元格具有系统提供的默认的组成视图

              .tableLable标签

              .detailTextLable详情标签

              .ImageView视图标签

设置行的高度:

               --(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

5 单元格的重用(行)

       5.1 是什么?

              将完整的超出屏幕的单元格存到队列之中,屏幕一旦出现空白区域,需要单元格填充时。先从队列中按照指定的标签来试取,看有没有已经使用完并存在队列之中的单元格,有就拿出来修改值后,重新加载到界面之中,如果没有就新建单元格。

       5.2 如何实现单元格的重用

              前提:超出屏幕的单元格已经自动插到对列之中

              具体做的内容:在回答每行的内容是什么样的时候先尝试着从对列中取单元格对象,取得结果有两种:要么取到,拿来继续使用。要么取不到可以重用的,那么自己新建即可。

              方法一:

                     手动创建单元格重用

                     1. 先尝试着从队列中取cell

                     2. 判断取出的是否为nil

                     3. 如果是空 则明确创建一个cell

              方法二:

                     系统负责创建指定样式的cell对象

                     1. 在ViewDidLoad中先tableView注册cell

                            [self.tableView registerClass[UITableViewCell class]forCellReuseIdentifier@"cell"]

                            2.  在生成的cell方法中直接从队列中按照指定的样式查找

              注意:存到队列之中的单元格可以有多重的样式,所以每一种进入队列的单元格都需要给一个标示,去队列中取单元格时,也要按照某种标示取对象。

 

6 三问一答的一答

       6.1 推出简单的VC来显示数据详情:

              a. 数据结构:

                     +Arear                         NSObject

                            +name                  NSString

                            +population          NSInteger

              要求:

                     1. 有一组城市信息,以tableView的形式来展示所有城市

                     2. 选中某一城市后推出新的VC显示城市的名字和人口

              思路:创建一个基本数据类继承于NSObject起名为Arear 定义两个属性一个初始化方法和一个数据列

                            创建一个继承tableViewController的控制器导入基本数据类定义一个城市数组    根据row来判断是哪一个城市

       6.2 推出tableView来显示子数据

              a. 数据结构:

                     +Arear                         NSObject

                            +name                  NSString

                            +population          NSInteger

                            +areas(区域)   NAArray(NSString)

              要求:

                     1. 有一组城市信息,以tableView的形式展示所有城市

                     2. 选中某一城市后推出新的tableViewController显示城市的所有areas信息;

 

7 TableView中加一行数据

              数据结构:

                     +Arear                        NSObject

                            +name                  NSString

                            +population          NSInteger

                   要求:

                            a。第一个界面使用tableView展示所有的城市信息

                            b。城市名称在单元格的左侧显示

                            c。城市的人口在单元格的右侧显示

                            d。在导航栏的右上角有一个加号按钮,点击这个加号后,推出一个新的普通vc

                            e。在推出的界面2中,包含两个文本框,一个用于输入新的城市名称,一个用于输入该城市的人口数

                            f。界面2中下方有一个保存按钮,点击保存按钮后,返回到界面1,并且将在界面2中输入的数据回传到界面1,保存在界面1中用于存放所有城市信息的数组中

                            g。同时,更新表格,显示增加完城市信息后的新数据(注:如何刷新整个表格?[ self.tableView reloadData];

 

     练习:

                   1.照片查看器

                            在一个TableView中列出所有照片的缩小图、照片名称和拍摄的位置。当用户点击某一行时,推出一个vc,在此vc中显示大的图片,大的图片允许缩放。

复习:协议的使用

协议的定义:

               1.协议名:类名+Delegate

               2.方法的第一个参数一定是委托方自己

               3.方法尽量体现调用的时机

@protocol InputViewControllerDelegate <NSObject>

-(void)inputViewController:(InputViewController*)inputVc inputFinishedWithMessahe:(NSString*)message;

@end

添加一个公开的Delegate方法

@property(nonatomic,weak)id<BViewControllerDelegate> delegate;

合适的时机给代理发消息

 

照片的缩放

1.定义一个UIImage的实例image

2.定义一个UIImageView的实例并把image赋给UIImageView

3.定义一个UIScroceView的实例并把imageView赋给UIScroceView

4.定义一全局的UIImageView并把imageView

5.遵守协议

6.实现方法

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。