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][email protected]"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.实现方法

时间: 2024-10-29 19:09:40

IOS之UIKit_Day07的相关文章

iOS -- SKSpriteNode类

SKSpriteNode类 继承自 SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKSpriteNode.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术

使用fruitstrap实现命令行将IPA包安装到iOS设备上

Requirements Mac OS X. Tested on Snow Leopard only. You need to have a valid iPhone development certificate installed. Xcode must be installed, along with the SDK for your iOS version. Usage fruitstrap [-d] -b <app> [device_id] Optional -d flag laun

iOS -- SKScene类

SKScene类 继承自 SKEffectNode:SKNode:UIResponder:NSObject 符合 NSCoding(SKNode)NSCopying(SKNode)NSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKScene.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开

iOS -- SKPhysicsWorld类

SKPhysicsWorld类 继承自 NSObject 符合 NSCodingNSObject(NSObject) 框架  /System/Library/Frameworks/SpriteKit.framework 可用性 可用于iOS 7.0或者更晚的版本 声明于 SKPhysicsWorld.h 参考指南 Sprite Kit Progamming Guide 概览 重要提示:这是一个初步的API或者开发技术文档.虽然已经审阅了本文档的技术准确性,但是它不是最终的版本.本机密信息仅适用于

iOS证书说明和发布

1.首先通过钥匙串访问——证书助理——从证书颁发机构请求证书——填写证书信息(邮箱,常用名称,存储到磁盘)——存储为(自定义名称.certSigningReuqest,简称CSR文件,只是为了提交到苹果开发者账号中,然后就没用了)到本地 2.苹果开发者账号中,创建证书(Development和Production)——上传CSR文件——下载证书运行 ( xxx.cer文件) 注意:只有在当前电脑中生成本地生成证书,上传到苹果开发账号,然后下载cer文件运行后,钥匙串中才有证书以及对应的秘钥 如果

iOS开发——项目实战总结&amp;UITableView性能优化与卡顿问题

UITableView性能优化与卡顿问题 1.最常用的就是cell的重用, 注册重用标识符 如果不重用cell时,每当一个cell显示到屏幕上时,就会重新创建一个新的cell 如果有很多数据的时候,就会堆积很多cell.如果重用cell,为cell创建一个ID 每当需要显示cell 的时候,都会先去缓冲池中寻找可循环利用的cell,如果没有再重新创建cell 2.避免cell的重新布局 cell的布局填充等操作 比较耗时,一般创建时就布局好 如可以将cell单独放到一个自定义类,初始化时就布局好

解决ios下的微信打开的页面背景音乐无法自动播放

后面的项目发现,还有两个坑,需要注意下: ·本文的解决方案的核心是利用了 微信/易信 在ready的时候会有个 WeixinJSBridgeReady/YixinJSBridgeReady事件,通过监听这个事件来触发的.那有个坑就是 如果微信已经ready了,但还没执行到你监听这个ready事件的代码,那么你的监听是没用的,所以最理想的情况是,监听的js放在head前面(放在css外链之前),确保最新执行,切记!切记!. ·另一个坑就是,本文的解决方案只适合一开始就播放的背景音乐.如果你是做那种

iOS程序执行顺序和UIViewController 的生命周期(整理)

说明:此文是自己的总结笔记,主要参考: iOS程序的启动执行顺序 AppDelegate 及 UIViewController 的生命周期 UIView的生命周期 言叶之庭.jpeg 一. iOS程序的启动执行顺序 程序启动顺序图 iOS启动原理图.png 具体执行流程 程序入口进入main函数,设置AppDelegate称为函数的代理 程序完成加载[AppDelegate application:didFinishLaunchingWithOptions:] 创建window窗口 程序被激活[

iOS库--.a与.framework

一.什么是库? 库是共享程序代码的方式,一般分为静态库和动态库. 二.静态库与动态库的区别? 静态库:链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝. 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存. 三.iOS里静态库形式? .a和.framework 四.iOS里动态库形式? .dylib和.framework 五.framework为什么既是静态库又是动态库? 系统的.framework是动态库,我们自己建立的.fram