标签栏控制器

17 Mar 2025 | 5 分钟阅读

在 iOS 应用程序中,我们必须为用户提供在应用程序的完全不同部分之间切换的功能。我们可能需要在底部放置一个带有不同按钮的标签栏,以便用户与这些按钮交互以切换到应用程序的不同部分。为此,可以使用标签栏控制器。在本教程的这一部分中,我们将讨论标签栏控制器。

标签栏控制器是一个容器视图控制器,它在单选风格的选择界面中管理一个视图控制器数组,以便用户可以与该界面交互以确定要显示的视图控制器。它是 UITabBarController 的实例,UITabBarController 继承自 UIViewController。

在标签栏界面中,标签栏显示在屏幕底部,带有多个标签栏按钮项目,用于在应用程序的不同模式之间进行选择。下图显示了如何在 iOS 的“健康”应用中配置标签栏界面。

iOS Tab Bar Controller iOS Tab Bar Controller

标签栏控制器维护一个视图控制器数组,其中每个选项卡都与视图控制器导航堆栈或自定义视图控制器相关联。当用户选择特定选项卡时,将显示关联堆栈的根视图控制器。标签栏界面用于呈现不同类型的信息,或者使用完全不同的样式呈现相同类型的信息。

UITabBarController 属性和方法

UITabBarController 类包含以下属性和方法。

序号属性描述
1var delegate: UITabBarControllerDelegate?它是 UITabBarControllerDelegate 协议的一个实例。
2protocol UITabBarControllerDelegateUITabBarControllerDelegate 协议包含一组用于自定义标签栏行为的方法。
3var tabBar: UITabBar它是与控制器关联的标签栏。
4var viewControllers: [UIViewController]?它是要在标签栏界面中显示的视图控制器数组。
5var customizableViewControllers: [UIViewController]?它是可以自定义的视图控制器数组。
6var moreNavigationController: UINavigationController管理“更多”导航界面的导航控制器。
7var selectedViewController: UIViewController?它表示与当前选定的选项卡关联的视图控制器。
8var selectedIndex: Int它是当前选定的视图控制器的索引。
9func setViewControllers([UIViewController]?, animated: Bool)它设置标签栏控制器的根视图控制器。

示例 1

在此示例中,我们将使用标签栏控制器创建一个非常简单的项目。在这里,我们将仅使用故事板来开发应用程序。

Main.storyboard

首先,我们需要将标签栏控制器添加到故事板。为此,请在对象库中搜索 UITabBarController,然后将结果拖到故事板。这将在项目中创建一个标签栏控制器,如下图所示。

iOS Tab Bar Controller

在这里,我们观察到标签栏控制器最初管理两个子视图控制器,它们具有项目 1 和项目 2,其中项目 1 已经被选中。如果我们通过将标签栏控制器作为初始视图控制器来运行该项目,那么我们将看到项目 1 显示在标签栏界面中具有两个项目,并且我们可以选择这两个项目以显示每个项目,如下图所示。

iOS Tab Bar Controller

在这里,我们可以配置标签栏项目并在属性检查器中选择自定义图像。选择特定视图控制器中的标签栏,然后转到属性检查器以更改标签栏项目的自定义图像,如下图所示。

iOS Tab Bar Controller

让我们将系统项目更改为搜索项目 1 和联系人项目 2。现在,我们将更改项目 1 和项目 2 的外观,以在标签栏界面中识别它们。因此,让我们更改项目 1 和项目 2 的背景颜色,并且我们还将标签添加到两个视图控制器。

iOS Tab Bar Controller

现在,运行此项目,我们将获得以下输出。

iOS Tab Bar Controller iOS Tab Bar Controller

现在,让我们在项目中添加第三个视图控制器。为此,请在对象库中搜索 UIViewController,然后将结果拖到故事板。要将该视图控制器附加到标签栏控制器,我们必须定义它们之间的关系。从标签栏控制器控制拖动到视图控制器,然后在它们之间选择“视图控制器”关系,如下图所示。

iOS Tab Bar Controller

它会将新添加的视图控制器连接到标签栏控制器。现在,我们将更改视图控制器的外观并向其添加标签以进行识别。

最后,该项目的界面生成器将如下图所示。

iOS Tab Bar Controller

输出

iOS Tab Bar Controller

示例 2:创建 Javatpoint iOS 应用程序

在此示例中,我们将使用 web 视图模拟 javatpoint 的 iOS 应用程序。在这里,我们将在标签栏控制器中配置三个视图控制器(HomeViewController、JavaViewController、PythonViewController)。

界面生成器

在界面生成器中,我们将添加一个具有三个子视图控制器的标签栏视图控制器,如下图所示。

iOS Tab Bar Controller

在此示例中,我们将使用 web 视图在视图控制器中加载特定链接。因此,我们需要将特定的 web 视图添加到视图控制器中。在对象库中搜索 WebView,然后将结果拖到每个视图控制器。此外,定义视图控制器中 WebView 的约束。

iOS Tab Bar Controller

HomeViewController.swift

JavaViewController.swift

PythonViewController.swift

输出

iOS Tab Bar Controller
下一主题标签栏