首页 理论教育 UIViewController子类的优化方式

UIViewController子类的优化方式

时间:2023-06-23 理论教育 版权反馈
【摘要】:UIViewController是所有视图控制器的基类,主要负责管理视图层次结构的类。在本书的11.2节中会讲述UIViewController的生命周期,11.3节中会展开介绍UIViewController的使用方式。当界面上只有表视图和其他简单的视图构成时,可以声明一个UITableViewController的子类。UITableViewController已经满足了UITableViewDelegate和UITableViewDataSource两个协议,所以只需要在子类中实现协议中的方法就可以了。2.集合视图控制器UICollectionViewController,一个用于管理集合视图的视图控制器。在11.4节中会展开对UINavigationController知识点的讲解。

UIViewController子类的优化方式

UIViewController是所有视图控制器的基类,主要负责管理视图层次结构的类。UIViewController类定义了所有视图控制器共有的行为,开发者一般不会直接创建UIViewController类的实例,而是声明一个UIViewController的子类,通过添加方法和属性来实现视图的展示和控件交互的功能。在本书的11.2节中会讲述UIViewController的生命周期,11.3节中会展开介绍UIViewController的使用方式。除了开发者自定义UIViewController的子类之外,UIKit框架也提供了许多UIViewController的子类,用于不同场景的视图展示。本小节将介绍常用的UIViewController子类,按使用场景划分如下:

1.表视图控制器

UITableViewController,一个用于管理表视图的视图控制器。当界面上只有表视图和其他简单的视图构成时,可以声明一个UITableViewController的子类。UITableViewController已经满足了UITableViewDelegate和UITableViewDataSource两个协议,所以只需要在子类中实现协议中的方法就可以了。如果在storyboard中指定了表视图UITableView的控件,那么子类会使用storyboard中的声明,否则就会默认创建一个合适尺寸的UITableView实例作为表视图。

2.集合视图控制器

UICollectionViewController,一个用于管理集合视图的视图控制器。当界面上只有集合视图和其他简单的视图构成时,可以声明一个UICollectionViewController的子类。UICollectionViewController已经满足了UICollectionViewDelegate和UICollectionViewDataSource两个协议,所以只需要在子类中实现协议中的方法就可以了。如果在storyboard中指定了集合视图UICollectionView的控件,那么子类会使用storyboard中的声明,否则就会默认创建一个合适尺寸的UICollectionView实例作为集合视图。

3.分拆视图控制器

UISplitViewController,一个控制“主视图-详情视图”的容器类型视图控制器,它负责管理两个子视图的视图控制器。此类界面中,主视图的更改驱动详情视图的更改。两个视图可以并排放置,也可以一次只展示一个,或者一个展示在另一个上方遮挡下方视图的部分区域。拆分视图控制器的根视图本身没有什么外观,开发者可以根据自己定义的子视图进行额外定制。

4.导航控制器

UINavigationController,一个基于堆栈视图导航的容器类型视图控制器,它是负责管理导航界面中的一个或多个子视图的视图控制器。此类界面中,一次只能看到一个视图。在当前视图上点击某个控件,会触发屏幕上的动画跳转到新的视图控制器中,从而隐藏先前的视图。点击界面顶部导航栏中的后退按钮可移除当前视图,从而返回上一个视图。在11.4节中会展开对UINavigationController知识点的讲解。

5.页视图控制器(www.xing528.com)

UIPageViewController,一个用于管理内容页面视图之间切换的容器类型视图控制器,其中每个页面视图由子视图控制器管理。页视图控制器可以通过直接编码或者用户手势进行页面切换的操作,在切换过程中会使用开发者指定的动画效果。页视图控制器中的视图需要满足UIPageViewControllerDataSource的实例提供,而在页面切换或者设备方向更改时可以使用满足UIPageViewControllerDelegate的实例接收到的消息来响应事件。

6.选项视图控制器

UITabBarController,一个用于管理多个选项视图之间切换的容器类型视图控制器。此类界面中,一次只能选中一个视图进行交互,不同于导航控制器,这些视图是平行的关系,切换时只是将某个视图展示,隐藏其他的视图,不会因为切换而销毁页面。选项视图控制器的根视图会在底部展示一个选项栏,用户可以点击其中的按钮进行不同视图间的切换。一般可以直接使用UITabBarController类来初始化视图控制器,如果需要定制也可以创建子类。在11.5节中会展开讲解UITabBarController的使用方式。

7.搜索控制器

UISearchController,一个根据搜索栏的交互来管理搜索结果显示的控制器,可以将搜索控制器与其他已有的视图控制器配合使用。如果一个视图中有可搜索的内容,可以将搜索控制器中的搜索栏放入已有的视图中,并使用搜索控制器进行搜索结果处理, 搜索控制器会自动显示一个新的视图控制器来展示结果。搜索控制器需要两个自定义的视图控制器,一个用于展示可搜索的内容,一个用于展示搜索结果。在初始化UISearchController时,传递结果展示视图控制器的实例给init(searchResultController:)方法,此外每个UISearchController提供一个UISearchBar实例,用于输入搜索的关键词,开发者可以将其添加到视图中指定的位置。

UISearchContainerViewController,一个用于管理界面中搜索结果展示的视图控制器。在UIKit中,开发者可以用present的方式展示一个搜索控制器的视图。但是如果想通过push的方式展示到一个导航控制器的视图中就不那么容易了,建议开发者可以使用UISearchContainerViewController进行搜索结果的视图展示。

8.图片和视频控制器

UIImagePickerViewController,一个用于管理拍摄照片、录制影片以及从用户的媒体库中选择多媒体的视图控制器。在第17章的学习中会详细介绍这个控制器。

UIVideoEditorViewController,一个用于编辑视频的视图控制器。视频编辑器通过用户交互进行编辑,并且通过委托对象将已经编辑好的视频路径返回回来。这个视图控制器仅能在可以拍摄视频的设备上使用,如果需要视频编辑,可以使用这个视图控制器提供界面。要注意的是,不要创建UIVideoEditorViewController的子类进行展示,也不要添加额外的视图在这个控制器的视图上,因为UIVideoEditorViewController有自己内部的展示逻辑。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈