在UIKit框架中只有一个根制图控制器。视图控制器用来管理界面和处理界面的类对象,程序启动前必须创建根视图控制器。所有视图控制器都需要自定义完成,必须继承于UIViewController 实现。xcode新创建的项目默认是通过info.plist 文件配置 main.storyboard 文件自动创建根视图ViewController。继承于UIView

创建根视图控制器
#import "AppDeletegate.h"
...code
- (void) didFinishLuanchingWithOptions:(NSDictionary *)luanchOptions {// 设置屏幕宽高self.window = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen]];// 设置视图控制器为window根节点self.window.rootViewController = [[UIViewController alloc] init];
}
...code
自定义ViewController

#import "ViewController.h"
@implementation ViewController
// 当视图控制器第一次被加载显示视图
- (void) viewDidLoad{[super viewDidLoad];//创建子视图UIView *view = [[UIView alloc] init];view.frame = CGReactMake(0, 0, 300, 45);view.backgroundColor = [UIColor greenColor];// 加入视图[self.view addSubView:view];
}
@end
添加子视图控制器
#import "ViewController.h"
@implementation ViewController
// 当视图控制器第一次被加载显示视图
- (void) viewDidLoad{[super viewDidLoad];self.view.backgroundColor = [UIColor blueColor];
}
// 当屏幕被点击时候触发
-(void)touchesBegan:(NNSet<UITouch *> *)touches  withEvent:(UIEvent *)event{UIViewController *sonViewController = [[UIViewController alloc] init];[self presentViewController: sonViewController animate:YES complation:nil];
}
@end
API
  • (void)touchesBegan:(NNSet<UITouch *> *)touches withEvent:(UIEvent *)event 当屏幕被点击时候触发。
  • (void)presentViewController:(UIViewController *) animate:(BOOL) completion:(callbacl) 显示一个视图控制器到屏幕上,参数1:UIViewController 新的视图控制器对象,参数2:animate 是否开启动画效果,参数3:completion: 执行完成后的回调函数,不需要传nil即可。
  • (void)dismissViewControllerAniamted:(BOOL) completion:(callback) 使当前视图控制器在屏幕消失,参数1:animte 是否开启动画效果,参数2:completion 执行完成后的回调函数,不需要传nil即可。
  • (void)removeFromSuperView 将当前视图实例从父级删除
  • (void)bringSubViewToFront: UIView* 将一个子视图调整到最顶级绘制
  • (void)sendSubViewToBack: UIView* 将一个子视图调整到最低层绘制

生命钩子

  • (void)viewDidLoad 加载内存时候触发, 通常用于初始化子节点布局和资源使用
  • (void)viewWillAppear:(BOOL)animated 即将显示时候触发
  • (void)viewDIdLayoutSubviews 布局子组件完成时候触发
  • (void)viewWillLayoutSubviews 当渲染时候布局子组件触发
  • (void)viewDidAppear:(BOOL)animated 已经显示时触发
  • (void)viewWillDisappear:(BOOL)animated 即将消失时候触发
  • (void)viewDidDisappear:(BOOL)animated 消失时候触发
  • (viod) didReceiveMemoryWarning 当内存不足时候触发

IOS UIViewController API,生命周期详解相关推荐

  1. Fragment生命周期详解

    关于Fragment的生命周期,博主写过Activity与Fragment生命周期详解,基本上把Fragment的生命周期详细介绍过,但是那仅仅是创建一个Fragmnet时的生命周期,而事实上Frag ...

  2. Android面试之Activity生命周期详解

    Activity生命周期详解 一 Activity的四种状态: Activity的生命周期中存在四种基本的状态:活动状态(Active/Runing),暂停状态(Paused),停止状态(Stoppe ...

  3. Fragment的懒加载与生命周期详解

    提示:本文仅为笔者学习记录 Fragment的懒加载与生命周期详解 什么是懒加载 了解Fragment的生命周期 onAttach onCreate onCreateView onActivityCr ...

  4. vue 声明周期函数_Vue 生命周期详解

    Vue 生命周期详解 Vue 生命周期流程 最开始,用户使用 new Vue() 创建根 Vue 实例,或者 Vue 实例化子组件都会调用_init方法(我们将这两种实例都称为vm): functio ...

  5. 01.软件项目管理与敏捷方法——敏捷项目生命周期详解笔记

    01.软件项目管理与敏捷方法--敏捷项目生命周期详解笔记 00.与其说是船还不如说是熟练的航行技术保证了成功的航行.--George William Curtis 01.敏捷项目是一个按照敏捷宣言宗旨 ...

  6. taro生命周期详解

    taro生命周期详解 taro介绍 生命周期 react的钩子函数 为兼容小程序的钩子函数 个别生命周期详解以及注意 1.render()函数 2.constructor()构造函数 3.在各个生命周 ...

  7. Eclipse中Maven常用命令以及Maven生命周期详解

    Eclipse中maven常用的命令 在某一个maven项目右键快捷方式,然后点击Run As就可以发现几个Maven的命令: Maven Build: 这个命令用于编译Maven工程,执行命令后会在 ...

  8. Spring 生命周期详解

    Spring 生命周期详解 一.传统JAVA bean的生命周期 使用Java关键字 new 进行Bean 的实例化,然后该Bean 就能够使用了. 一旦bean不再被使用,则由Java自动进行垃圾回 ...

  9. flutter 生命周期详解

    flutter 生命周期详解 简介 一.widget 生命周期 二.APP 生命周期 总结 简介 众所周知,程序是有生命周期的,那么flutter 的生命周期是什么呢? flutter 的生命周期大体 ...

最新文章

  1. 首个全球智慧城市在线社区启动 将锁定对城市发展构成挑战的困难
  2. SharePoint 2013 配置HTTPS(SSL)
  3. java properties 路径问题_Java 读取Properties文件时应注意的路径问题
  4. 【原】UCS-2和UTF-8的互相转换
  5. 慎用window.showModalDialog()
  6. android web3j 代币查询_Android通过web3j以太坊智能合约交互
  7. Android开发(一):android环境搭建
  8. java队列优先级_优先级队列-Java的PriorityQueue与最小堆有何不同?
  9. C++Builder编程中动态更改自定义打印纸张
  10. dj鲜生-通过邮箱发送加密的激活链接
  11. 如何更流畅地使用 Google 搜索?
  12. 网络空间安全复习归纳
  13. JDK11下载和安装(macos)
  14. matlab sae模型,发动机平均值模型的三篇SAE论文
  15. 华为路由器基本使用命令
  16. 计算机组成原理推荐书籍
  17. 第八周编程题在线测试
  18. 教师空间HTML没有怎么查找,人人通空间为什么看不到老师发的作业?
  19. Linux环境下安装Oracle 11g R2完整图文教程
  20. 地图兴趣点搜索三(ES相关性得分参数调整)

热门文章

  1. 搜狗输入法为什么按空格出字 搜狗输入法按空格出字怎么设置
  2. idea 快捷键代码行标记并快捷跳到标记行
  3. SpringBoot整合oss实现文件的上传,查看,删除,下载
  4. spring中context:property-placeholder标签详解
  5. socket和http区别有哪些
  6. Java分布式篇6——RabbitMQ
  7. Vue 计算属性 computed
  8. 5乘7的c语言程序,C语言程序设计实验5-7教案(20页)-原创力文档
  9. java 压缩jar 仓库,java服务安装(一):使用java service wrapper及maven打zip包
  10. 形容人的内核是什么意思_识人核心是什么?