iOS14+Swift5.x+Xcode12学习笔记(5)——视图控制器(UIViewController)

本文详细介绍了iOS应用开发中常见的视图控制器,包括UIViewController、UINavigationController、UITableViewController、UICollectionViewController、UITabBarController、UISplitViewController、UIPageViewController和UIAlertController的使用方法和特点。讲解了如何设置导航栏、表格视图、标签栏以及如何在不同场景下选择合适的控制器。
摘要由CSDN通过智能技术生成

简介

视图控制器用于控制控制器上的各个控件,有的控制器自带某些可视化控件。有的控制器可以直接在StoryBoard中拖放使用(如UINavigationController),有些控制器只能使用代码生成(如UIAlertController)。所有的控制器类继承自UIViewController类。
视图控制器自带数个声明周期函数,常用的如viewDidLoad(),控制器上的控件加载到内存中的时候调用,一般编写各种初始化代码;ViewDidAppear()视图控制器出现在屏幕中时调用;ViewDidDisappear()视图控制器消失时(例如切换到下一个控制器时)调用;其他的如ViewWillLayoutSubviews()视图控制器将要进行布局时,一般在这里设置控件的布局属性,这样可以很好的适配iPad设备(放置旋转后布局乱掉)。

UIViewController

  • 自带一个View,大小与ViewController相同,可以直接调用addSubViews(_:)方法在上添加控件。
  • 包含两个属性,记录切换前后的视图控制器,presentedViewController指向下一个,presentingViewController指向前一个。
  • 也可以直接将控件添加到ViewController上而不是自带的View上,这样可以在需要的时候再显示这个控件(不过一般不用这种写法,用lazy的方式更方便)。

导航控制器(UINavigationController)

导航控制器大多用来管理,包装其他控制器。被NavigationController管理的控制器除第一页外都会自动产生一个导航栏并在左上角带有一个返回按钮,点击可以返回上一个控制器,也可以给导航栏添加其他功能的按钮(如「编辑」、「新增」等等)。

  • 设置NavigationController的rootViewController属性可以设置第一个控制器界面。
  • 一个导航控制器(NavigationController)都由导航栏(UINavigationBar)
    、导航内容(UINavigationItem)、导航工具栏(UIBarButtonItem)
  • 所有NavigationController管理的ViewController共用一个NavigationBar,导航内容和导航工具栏每个ViewController独立拥有。
  • 如果要设置返回上一页按钮的右边的文字,需要在前一个ViewController中设置(返回图标由NavigationBar控制,文字由NavigationItem控制)。
  • NavigationController通过pushViewController(viewController: animated:)方法进入下一个ViewController,并将ViewController放入堆叠中。并且在任意一个ViewController中都可以通过navigationController的topViewController来获取最上层的ViewController。
self.navigationController?.topViewController

popViewController(animated:)可以在堆叠中移除当前的ViewController。所有在堆叠中的ViewController都存放在NavigationController的viewControllers属性中。

表格控制器(UITableViewController)

UITableViewController整合了ViewController、TableView、TableViewCell。

  • 不用再设置delegate和datasource
  • 内置的表格控件占满全屏幕
  • 可以设置Cell为静态Cell在程序开始前就设定好Cell的内容。

集合控制器(UICollectionViewController)

使用方法与表格控制器几乎相同。

标签栏控制器(UITabBarController)

在视图控制器下方提供一个标签栏,每个标签项都是一个ViewController,通过点击标签项进行ViewController的切换。

  • TabBarController管理的每个控制器中,都可以通过tabBarController属性来取得TabBarController。
  • 所有被TabBarController管理的ViewController都存放在viewControllers属性中,调用append(_:)方法可以加入新的ViewController,通过tabBarItem属性设置图标与标题。
let vc = UIViewController()
tabBarController?.viewControllers?.append(vc)

vc?.tabBarItem = UITabBarItem(tabBarSystem: .favorites, tag: 0)
vc?.tabBarItem
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值