IOS之UIKit_Day12

1.故事板的基本使用:

       a.设置启动

       b.添加新的场景

       c.添加过度segue

       d.场景中的控制器与自定义的控制器的绑定

       e.控制器的使用

              1》导航控制器

              2》标签控制器的配置

****cell.selectionStyle=UITableViewCellSelectionStyleNone设置该行不可点击

2.UITableView在故事板中的使用

       2.1 静态表格:

              实现步骤:

                     1.从资源库中添加表格控制器,在第四个检查器中,设置第一个Content为Static

                     2.修改Prototype的属性为0

                     3.设置section属性 设置style属性为group

                     4.逐一选中各个Section设置头和cell的数目

                     5.逐一选中Cell设置样式

                     6.新建一个类,继承自UITableViewController在故事板中选中控制器,修改第三个检查器中的Class属性,将自定义的类与场景关联起来

                     7.删除新建的类中有关生成表格的三问一答的代码

                     8.如果需要对静态的表格中的控件赋动态值,可以在拆分试图下,将控件连线到类中,然后在viewWillAppear;事件中为控件赋值。

       2.2 动态表格-系统原型

              实现步骤:

                     1.从资源库中添加表格控制器

                     2.设置表格的Prototype的个数为1

                     3.选中Prototype Cell 在检查器中设置该原型的style以及indentifier

                     4.创建一个类 继承自UITableViewController

                     5.将类与故事板中的控制器绑定

                     6.在回答三问,其中单元格不需要注册回答第三问是直接按照属性栏中设置的indentifier去队列中取出单元格

       2.3 动态表格—自定义原型

              实现步骤:

                     1.从资源库中拖拽一个TableViewController

                     2.添加一个单元格原型

                     3.设定该原型的style为Custom

                     4.设定该原型的identifier

                     5.设计cell的内容

                     6.新建一个类 继承自UITableViewCell

                     7.选中原型Cell 第三个检查器 设定class为新建的类

                     8.进入拆分视图中,将原型cell中的各个控件连线到类中,作为公开的输出口

                     9.新建一个类,继承自UITableViewController并与故事板中VC绑定

                     10.回答第三个问题时,从队列中按照原型的identifier取出自定义的cell类的实例,并返回.

       2.4 动态表格-混合自定义原型

              实现步骤:

                     1.在故事板中添加tableViewController之后 设置Prototype Cell的个数为2

                     2.为每个Prototype Cell设置identifier

                     3.在tableVC绑定的自定义类中 回答三问

                     其中,第三问生成单元格时,可以根据生成的单元格的位置以及设定的规律去队列中取按照不同的identifier来取不同原型的单元格,然后返回。

2.5 跳转

       从一个场景跳转到另外一个场景(一个VC跳转到另外一个VC

       实现方法:

       方法一:segue

              不需要写代码通过连线的方式

              实现步骤:

                     选中原型VC按住Control 左键 拖拽到目标VC 弹出的菜单后,根据跳转的需要设置push或者mode即可

       方法二:

              从一个VC跳转到故事板中的一个独立VC

       实现步骤:

              1.选中故事板中的VC 在第三个检查器中设定VC的storyboard ID

              2. 在要执行跳转的事件中编写代码

              3.获取控制器所在的故事板对象self.storyboard

                   4.故事板发消息self.storyboard instantiateViewControllerWithIdentifier:@"SomeVC"

                   其中参数填写为VC的StoryBoard ID即可

                   然后 推出新的VC

       方法三:

              跳转到独立的Xib

              实现方法:

                     同之前的跳转方式一样,使用initWithNIbName穿件VC的实例后 推出即可

2.6 传值

       正向传值:从AVC跳转到BVC时,AVC传数据给BVC的过程

              实现思路:

                     1.BVC中公开一个属性接受值

                     2.AVC在跳转到BVC之前取到BVC的引用,就可以给空出的属性赋值,完成正向传值。

       反向传值:

              从AVC跳转到BVC之后,BVC返回AVC的过程给AVC传值的过程

              实现思路:

                     1.BVC是委托方做三件事(定义协议,添加Delegate方法,合适的时机发消息)

                     2.AVC是代理方,做三件事(遵守协议,实现方法,设置BVC的Delegate为self

3UICollectionViewControl

       3.1 是什么?

              可以控制视图,以多行的形式展示数据的一种控制器。是UITableViewControl的演变,所以在使用上与表视图和相似(从IOS6后支持)

          3.2 与表试图相比的相同点

                   UITableViewController

                            .tableView(UITableView

                                      .dataSource(id<UITableViewDataSource>

                                      .delegate(id<UITableViewDelegate>

                   每一行的类型是:UITableViewCell

                   加载数据:实现三问一答即可(有几个分区,每个分区多少行,每一行什么样)      

                   UICollectionViewController

                            .collectionView(UICollectionView

                                      .dataSource(id<UICollectionViewDataSource>

                                      .delegate(id<UICollectionViewCell>

                   每一项的类型:UICollectionViewCell

                   加载数据:实现三问一答即可(有几个分区,每个分区有多少个item,每一项是什么样)

          3.3与tableView相比的不同点

          1.tableViewCell默认自带了三个显示内容的控件(imageView testable DetailLable)并且着三个控件的摆放位置也有系统定义好的四种样式,而collectionViewCell没有任何事先有系统定义的用于显示内容的容器,只有能访问的这样几个属性:backgroundColor  ,bacbackgroundView、contentView

          2.tableViewCell的排列顺序是系统提前定义好的,都是严格的按照从上倒下,依次排布,也就是每一cell的坐标,在指定了行高之后,都有系统计算完成并显示;collectionView没有固定的item的排布规则,需要自定义,这时需要一个特殊的类叫做布局类(UICollectionViewLayout)来辅助CollectionView完成每一个item的显示位置的设定,系统只提供了一种布局类,从UICollectionViewLayout派生出来的,叫做流式布局UICollectionFlowLayout,这种系统定义的布局类的布局特点是:一行排满后,自动换行

时间: 2024-08-07 21:19:51

IOS之UIKit_Day12的相关文章

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