---
title: View controllers
framework: uikit
role: collectionGroup
role_heading: API Collection
path: uikit/view-controllers
---

# View controllers

Manage your interface using view controllers and facilitate navigation around your app’s content.

## Overview

Overview You use view controllers to manage your UIKit app’s interface. A view controller manages a single root view, which may itself contain any number of subviews. User interactions with that view hierarchy are handled by your view controller, which coordinates with other objects of your app as needed. Every app has at least one view controller whose content fills the main window. If your app has more content than can fit on-screen at once, use multiple view controllers to manage different parts of that content. A container view controller embeds the content of other view controllers into its own root view. A container view controller may mix custom views with the contents of its contained view controllers to facilitate navigation or to create unique interfaces. For example, a UINavigationController object manages a navigation bar and a stack of view controllers (only one of which is visible at a time), and provides an API to add and remove view controllers from the stack. UIKit provides several standard view controllers for navigation and managing specific types of content. You define the view controllers containing your app’s custom content. You may also define custom container view controllers to implement new navigation schemes.

## Topics

### Essentials

- [Managing content in your app’s windows](uikit/managing-content-in-your-app-s-windows.md)
- [UIKit Catalog: Creating and customizing views and controls](uikit/uikit-catalog-creating-and-customizing-views-and-controls.md)

### Content view controllers

- [Displaying and managing views with a view controller](uikit/displaying-and-managing-views-with-a-view-controller.md)
- [Showing and hiding view controllers](uikit/showing-and-hiding-view-controllers.md)
- [UIViewController](uikit/uiviewcontroller.md)
- [UITableViewController](uikit/uitableviewcontroller.md)
- [UICollectionViewController](uikit/uicollectionviewcontroller.md)
- [UIContentContainer](uikit/uicontentcontainer.md)

### Container view controllers

- [Creating a custom container view controller](uikit/creating-a-custom-container-view-controller.md)
- [UISplitViewController](uikit/uisplitviewcontroller.md)
- [UINavigationController](uikit/uinavigationcontroller.md)
- [UINavigationBar](uikit/uinavigationbar.md)
- [UINavigationItem](uikit/uinavigationitem.md)
- [UITabBarController](uikit/uitabbarcontroller.md)
- [UITabBar](uikit/uitabbar.md)
- [UITabBarItem](uikit/uitabbaritem.md)
- [UITab](uikit/uitab.md)
- [UITabAccessory](uikit/uitabaccessory.md)
- [UISearchTab](uikit/uisearchtab.md)
- [UITabGroup](uikit/uitabgroup.md)
- [UIPageViewController](uikit/uipageviewcontroller.md)

### Presentation management

- [Disabling the pull-down gesture for a sheet](uikit/disabling-the-pull-down-gesture-for-a-sheet.md)
- [UIPresentationController](uikit/uipresentationcontroller.md)
- [UISheetPresentationController](uikit/uisheetpresentationcontroller.md)

### Search interface

- [UISearchContainerViewController](uikit/uisearchcontainerviewcontroller.md)
- [UISearchController](uikit/uisearchcontroller.md)
- [UISearchBar](uikit/uisearchbar.md)
- [UISearchResultsUpdating](uikit/uisearchresultsupdating.md)
- [Displaying searchable content by using a search controller](uikit/displaying-searchable-content-by-using-a-search-controller.md)
- [Using suggested searches with a search controller](uikit/using-suggested-searches-with-a-search-controller.md)

### Images and video

- [UIImagePickerController](uikit/uiimagepickercontroller.md)
- [UIVideoEditorController](uikit/uivideoeditorcontroller.md)

### Documents and directories

- [Customizing a document-based app’s launch experience](uikit/customizing-a-document-based-app-s-launch-experience.md)
- [Adding a document browser to your app](uikit/adding-a-document-browser-to-your-app.md)
- [Providing access to directories](uikit/providing-access-to-directories.md)
- [Building an app with a document browser](uikit/building-an-app-with-a-document-browser.md)
- [Building a document browser app for custom file formats](uikit/building-a-document-browser-app-for-custom-file-formats.md)
- [UIDocumentViewController](uikit/uidocumentviewcontroller.md)
- [UIDocumentBrowserViewController](uikit/uidocumentbrowserviewcontroller.md)
- [UIDocumentPickerViewController](uikit/uidocumentpickerviewcontroller.md)
- [UIDocumentInteractionController](uikit/uidocumentinteractioncontroller.md)

### iCloud Sharing

- [UICloudSharingController](uikit/uicloudsharingcontroller.md)

### Activities interface

- [Collaborating and sharing copies of your data](uikit/collaborating-and-sharing-copies-of-your-data.md)
- [UIActivityViewController](uikit/uiactivityviewcontroller.md)
- [UIActivityItemProvider](uikit/uiactivityitemprovider.md)
- [UIActivityItemSource](uikit/uiactivityitemsource.md)
- [UIActivity](uikit/uiactivity.md)
- [UIActivityItemsConfigurationProviding](uikit/uiactivityitemsconfigurationproviding.md)

### Font picker

- [UIFontPickerViewController](uikit/uifontpickerviewcontroller.md)
- [UIFontPickerViewControllerDelegate](uikit/uifontpickerviewcontrollerdelegate.md)
- [UIFontPickerViewController.Configuration](uikit/uifontpickerviewcontroller/configuration-swift.class.md)

### Color picker

- [UIColorPickerViewController](uikit/uicolorpickerviewcontroller.md)
- [UIColorPickerViewControllerDelegate](uikit/uicolorpickerviewcontrollerdelegate.md)

### Word lookup

- [UIReferenceLibraryViewController](uikit/uireferencelibraryviewcontroller.md)

### Text formatting

- [UITextFormattingViewController](uikit/uitextformattingviewcontroller.md)

### Printer picker

- [UIPrinterPickerController](uikit/uiprinterpickercontroller.md)

### Interface orientation

- [isPortrait](uikit/uiinterfaceorientation/isportrait.md)
- [isLandscape](uikit/uiinterfaceorientation/islandscape.md)

### Interface restoration

- [Restoring your app’s state](uikit/restoring-your-app-s-state.md)
- [Restoring your app’s state with SwiftUI](swiftui/restoring-your-app-s-state-with-swiftui.md)
- [Preserving your app’s UI across launches](uikit/preserving-your-app-s-ui-across-launches.md)
- [UIViewControllerRestoration](uikit/uiviewcontrollerrestoration.md)
- [UIObjectRestoration](uikit/uiobjectrestoration.md)
- [UIStateRestoring](uikit/uistaterestoring.md)

## See Also

### User interface

- [Views and controls](uikit/views-and-controls.md)
- [View layout](uikit/view-layout.md)
- [Appearance customization](uikit/appearance-customization.md)
- [Animation and haptics](uikit/animation-and-haptics.md)
- [Windows and screens](uikit/windows-and-screens.md)
