多控制器管理
pch文件
- ** 创建PCH文件 **
- ** 系统内增加PCH文件(pre搜索) **
** 注意:PCH文件的路径为真实路径.不是bounds路径就可以了. **
作用:
- 导入公用的头文件
- 导入公用的宏(全局宏)
- 自定义NSLog(系统的NSLog非常消耗cpu,所以定义NSLog减少消耗,进行测试.
- 如果有c文件存在,会产生冲突,C中编译无法识别OC(加条件编译,OC时才才执行).
首先因为是在之前使用的推出swift后就暂停系统自动创建了,我们手动创建时需要配置系统根目录文件.
pch文件中常用代码
//如果有C文件还要加判断不然报很多错误
#ifdef __OBJC__
//全局宏
#define M 32
//导入共用的头文件
#import "ZLPerson.h"
//调试时可以使用自定义的NSLog,上线不能使用
#ifdef DEBUG
//在DEBUG下才替换NSLog
#define ZLLog(...) NSLog(__VA_ARGS__)
#else
//否则自定义的打印方式不走任何替换
#define ZLLog(...)
#endif
#endif
UIApplication
单例设计模式
-
可以设置角标
0. 获取程序对象 1. 创建远程通知设置对象 UIUserNotificationSettings 类型对象 2. iOS8.0之后需要注册 程序对象注册 [app registerUserNotificationSettings:settings] 3. 设置角标
app.applicationBadgeNumber.
4. 允许显示通知
- app对象设置状态栏(必须先添加info.plist 的View controller-based status bar appearance为no)
- 网络指示器(联网的图标)networkActivityIndicator属性.网络菊花
- 分享:链接对象(NSNRL 创建时@"http://www.baidu.com")电话tel,短讯msm,邮件等.
UIApplication的代理方法作用
//了解这些方法什么时候开始调用,并且** 自己手动添加一个接受内存警告的方法.(因为代理方法先收到内存警告) **
- didfinishlaunching启动
- background后台
- foreground前台
程序启动的过程
1.打开程序-->2.执行main函数-->3.执行UIApplicationMain函数(各个参数的含义:第三个??)-->4.初始化UIApplication(创建和设置代理对象,开启循环事件)-->5.监听系统事件.-->6.结束程序.
手动在空白程序中创建控制器添加window和view(关闭storyBoard作为程序入口)
- 创建UIWindow(代理中有window属性)
- 创建控制器对象(控制器被创建时就自带一个view属性.
- 将控制器对象作为window对象(rootViewController属性)的根控制器
- 设置window对象(keyWindow)为可视化.
控制器的三种创建方式.
- alloc init
- board
1. - XIB(注意设置file`s Owner)的两个重要点
1. 指定名字
2. 同名
3. 同名去掉controller
控制器中的UIView的创建(采用的是懒加载的方式)
控制器创建好以后, 控制器所管理的View是如何创建的?
控制器的View是通过调用控制器的loadView方法来创建的。这个方法是UIViewController中的一个方法。
** 只要控制器的loadView方法被调用了, 那么证明控制器的View创建好了。当调用完毕控制器的loadView方法以后, 从这时开始, 才创建好了控制器的view
当控制器的View被创建好以后, 紧接着就调用控制器的viewDidLoad方法
控制器的View采用了懒加载的方式, 也就是说, 在需要的使用(在用到的时候)才会创建(调用loadView方法)。
** 注意: 无论控制器是如何创建的, 只要在控制器中, 重写了("实现了")loadView方法, 并且没有调用[super loadView]方法, 那么最终控制器的View就必须完全在loadView方法中自己来创建了。所以loadView方法可以用来自定义View。
多控制器
- 导航控制器
navigationItem属性的具体内容:
title属性
titleView属性
leftBarButtonItem // 只能设置左上角的一个按钮
leftBarButtonItems // 可以设置左上角有多个按钮
rightBarButtonItem // 只能设置右上角的一个按钮
rightBarButtonItems // 可以设置右上角有多个按钮
backBarButtonItem // 设置下一个控制器, 左上角的按钮。默认情况下,该按钮文字与上一个控制器的title文字相同。
- UITabBarController
控制器的生命周期
当控制器被创建加载一次会调用系统的这些方法
1. loadView 加载view
2. viewDidLoad 已经加载view
3. viewWillAppear view将要被显示
4. viewWillLayoutSubviews view将要布局子控件
5. viewDidlayoutSubviews view已经布局子控件
6. viewDidAppear view已经显示
7. viewWillDisAppear view将要消失
8. viewDidDisAppear view已经消失
9. delloc方法销毁. 控制器销毁