UIViewController17 Mar 2025 | 5 分钟阅读 正如我们在本教程前面所述,ViewController 是 iOS 应用程序的基本构建块。ViewController 是故事板上的一个容器,内容视图绘制在该容器上以创建 iOS 应用程序。但是,ViewController 是管理 iOS 应用程序内容视图的组件。 在 iOS 开发中,我们使用各种 ViewController 来管理内容视图,例如,UIViewController、TableViewController、CollectionViewController、PageViewController 等。在本教程的这一部分,我们将讨论 UIViewController。 UIViewController 是一个管理 UIKit 应用程序视图层次结构的对象。UIViewController 定义了 iOS 应用程序中使用的所有类型的 ViewController 的共享行为和属性。UIViewController 类继承自 UIResponder 类。 UIViewController 是为构建 iOS 应用程序而创建的所有视图控制器的父类,包括内置的 ViewController,如 CollectionViewController 和 TableViewController。在 iOS 应用程序中,我们不需要直接实例化 UIViewController 类。相反,我们定义继承 UIViewController 的类,并添加生命周期方法来管理视图层次结构。 正如我们已经讨论过的,UIViewController 继承了 UIResponder 类,这使得用户可以与视图进行交互。UIViewController 有以下职责。
为了构建实时的 iOS 应用程序,我们结合使用多个视图控制器,其中所有视图控制器代表应用程序的不同部分。UIViewController 控制与应用程序中使用的其他视图控制器的协调。ViewController 可能会呈现不同的视图控制器以显示一组新的视图。它也可以充当其他视图控制器内容的容器。 每个 iOS 应用程序都包含至少一个 UIViewController 的子类。为了构建 iOS 应用程序,我们创建多个自定义视图控制器,这些视图控制器定义了应用程序的整体功能。在以下部分中,我们将简要概述 UIViewController 的自定义子类提供的功能。 视图管理视图层次结构的根视图存储在类的 view 属性中。根视图是视图层次结构中其余视图的容器。根视图的大小和位置由拥有它的对象决定,该对象是父视图控制器或应用程序的窗口。由窗口拥有的视图控制器是应用程序的根视图控制器,其视图的大小被调整为填充窗口。 为了在 iOS 应用程序中创建内容视图,我们必须指定视图。以下是可以用于在 iOS 应用程序中指定视图的方法。 1) 指定自定义视图最可取的方式是使用故事板。我们可以在故事板中指定视图,并创建视图到相应 ViewController 类的连接。我们还可以在故事板本身中指定应用程序的不同 ViewController 之间的关系。要从故事板加载视图控制器,我们调用 UIStoryboard 类的 instantiateViewController(withIdentifier:) 方法。故事板对象创建视图控制器对象并将其返回给代码。 2) 我们可以使用 Nib 文件指定视图。但是,nib 文件使我们能够为单个视图控制器类指定视图,但不允许我们定义不同 ViewController 之间的关系。 3) 我们可以使用 loadView() 方法为 ViewController 指定视图,在该方法中,我们以编程方式创建视图层次结构,并将层次结构的根视图分配给 UIViewController 视图属性。 在故事板中,ViewController 的根视图始终调整大小以适应 ViewController 的分配空间。对于我们添加到故事板的所有自定义视图,我们必须定义自动布局约束,这些约束控制视图在不同屏幕尺寸上的大小和位置。 视图状态根据 viewcontroller 外观的变化,子类管理监听器方法,这些方法在视图出现或消失后得到通知。下图显示了这些方法及其各自的视图状态。 ![]() 以下方法会在 viewcontroller 外观发生变化时收到通知。
实现容器 ViewController容器 ViewController 充当其他视图控制器的容器,即,它管理它拥有的其他视图控制器的内容的呈现,这些视图控制器也称为子视图控制器。自定义 ViewController 也可以充当容器视图控制器。 容器视图控制器应声明一个公共接口来关联其子项。这些方法的性质取决于我们正在创建的容器的语义。我们需要决定视图控制器可以一次显示多少个子项,何时显示这些子项以及它们在视图控制器的视图层次结构中出现的位置。视图控制器类定义子项共享的关系(如果有)。通过为容器建立一个清晰的公共接口,您可以确保子项以逻辑方式使用其功能,而无需访问太多关于容器如何实现行为的私有细节。 可以调用以下方法来维护容器视图控制器。
内存管理ViewControlles 提供了内置支持来释放 iOS 应用程序未使用的内存,这也阻止了应用程序中的内存泄漏(如果有)。UIViewController 类提供了一个生命周期方法 didRecieveMemoryWarning(),该方法会在低级别内存条件下收到通知。 |
我们请求您订阅我们的新闻通讯以获取最新更新。