iOS 视图控制器(UIViewController)剖析

本文详细介绍了iOS开发中视图控制器的作用与实现机制,包括其主要属性、方法、设计模式及视图的加载过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创作品,欢迎转载,转载时请注明出处。
视图控制器在iOS编程中占据非常重要的位置,因此我们一定要掌握。
1.作用:
•创建和管理视图。
•管理视图上显示的数据。
•设备方向变化,调整视图大小以适应屏幕。

 

 

•负责视图和模型之间的数据及请示的传递。

 

2. 视图控制器剖析

 

视图控制器有一个导航项,一个工具栏子项集以及一个tabbarItem项与其关联。

 

3. 主要属性

• view: 控制器管理的根视图
• title:  控制器导航栏的标题
• wantsFullScreenLayout: 是否需要全屏显示
• interfaceOrientation: 界面方向
• navigationItem: 导航子项
• editing: 是否处理编辑状态
• hidesBottomBarWhenPushed: 入栈时隐藏底部栏
• toolbarItems: 工具栏子项集

 

• tabBarItem: 标签栏子项

•  editButtonItem:返回一个编辑按钮   
• parentViewController :交视图控制器 
•   searchDisplayController :搜索显示控制器
•   splitViewController :分割视图控制器
•  modalViewController :模式控制器
•  navigationController :导航控制器
•  tabBarController :标签控制器

 

4. 主要方法

• – loadView:不要主动调用该方法,当访问控制器view的时候,就会调用该方法。如果要自己创建view,则需要重写该方法。
• – viewDidLoad:当加载控制器的视图到内存时,该方法被调用。
•  – viewWillAppear:
•  – viewDidAppear:
•  – viewWillDisappear:
•  – viewDidDisappear:
• – shouldAutorotateToInterfaceOrientation:是否支持指定的界面方向。
• –willAnimateRotationToInterfaceOrientation: duration:将要使用动画过渡到某个界面方向。
• – didReceiveMemoryWarning:接收到内存警告信息。
• – presentModalViewController:animated:显示模式控制器
• – dismissModalViewControllerAnimated:隐藏模式控制器
• – setToolbarItems:animated:设置工具栏子项
• – setEditing:animated:设置编辑状态

5. 设计模式

    传统的mvc设计模式

   Traditional version of MVC as a compound pattern

   iOS mvc设计模式

  Cocoa version of MVC as compound design pattern

  主要区别在于view和model之间的数据交换都要通过控制器来协调,view和model之间不直接进行数据交换。

 

6.  控制器加载视图过程

 当调用视图控制器的view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好的编程惯例。接着会调用视图的viewLoad->viewWillAppear->viewDidAppear.

6.  控制器视图消失过程

    消失过程比较简单,不作说明。

 

7. 事件处理

如图所示,一般情况下,当一个视图不响应用户事件时,它会将事件传递给它的父视图。但是,当视图被视图控制器管理时,它会将事件首先传递给视图控制器。如果视图控制器也不处理该事件,则视图控制器会将数据传递给视图控制器视图的超类,一般是UIWindow.

 


   下一节,将对导航控制器(UINavigationController)做详细深入的剖析,请期待。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值