导航项目

17 Mar 2025 | 4 分钟阅读

在本教程中,我们讨论了导航控制器和导航栏,它们结合使用以实现iOS应用程序中视图控制器之间的导航。但是,如果我们单独留下导航项目,讨论将永远不会完成。在本教程的这一部分中,我们将详细讨论导航栏中使用的导航项目。

导航项表示导航栏显示的项,以便用户可以交互并导航到iOS应用程序中的其他视图控制器。它是继承自NSObject类的UINavigationItem类的实例。

当我们把一个视图控制器推到导航堆栈上时,它会得到一个UINavigationItem对象,其中包含按钮和视图,这些按钮和视图将显示在其导航栏中。导航堆栈中的每个视图控制器都有一个公共的导航栏;但是,导航项对象始终不同,并且特定于关联的视图控制器。

导航项对象总是显示与其关联的视图控制器的信息,包括导航堆栈顶部视图控制器的标题。视图控制器可能在导航栏上包含一个或多个右侧按钮,以允许用户触发某些操作。UINavigationItem包含leftBarButtonItems和rightBarButtonItems属性,用于定义左侧和右侧的栏按钮项。这些项的外观总是取决于导航栏中可用的空间。

导航项的backBarButtonItem属性用于配置用于导航到前一个视图控制器的后退按钮的外观。但是,当视图控制器是根视图控制器时,不会显示后退栏按钮。

实例化UIBarButtonItem类以创建栏按钮项,这些栏按钮项被分配为导航项的左侧或右侧栏按钮项。

UINavigationItem属性

下表包含UINavigationItem类的属性。

序号属性描述
1var title: String?它表示关联的视图控制器的标题。
2var largeTitleDisplayMode: UINavigationItem.LargeTitleDisplayMode它表示标题在导航栏上显示的模式。
3var prompt: String?它表示显示在导航栏顶部的单行文本。
4var backBarButtonItem: UIBarButtonItem?它表示与导航控制器关联的后退按钮项。
5var hidesBackButton: Bool它是一个布尔值,指示后退按钮是否隐藏。
6var leftBarButtonItems: [UIBarButtonItem]?它是UIBarButtonItem的数组,显示在导航栏的左侧。
7var leftItemsSupplementBackButton: Bool它是一个布尔值,指示是否除了导航栏中的后退按钮之外还显示左侧项。
8var leftBarButtonItem: UIBarButtonItem?它是显示在导航栏左侧的UIBarButtonItem对象。
9var rightBarButtonItems: [UIBarButtonItem]?它是显示在导航栏右侧的UIBarButtonItem对象的数组。
10var rightBarButtonItem: UIBarButtonItem?它是显示在导航栏右侧的UIBarButtonItem对象。
11var standardAppearance: UINavigationBarAppearance?它表示标准高度导航栏的外观设置。
12var compactAppearance: UINavigationBarAppearance?紧凑高度导航栏的外观设置。
13var scrollEdgeAppearance: UINavigationBarAppearance?它表示当任何可滚动内容的边缘到达导航栏的匹配边缘时使用的外观设置。
14var searchController: UISearchController?它表示集成到导航栏中的搜索控制器。
15var hidesSearchBarWhenScrolling: Bool它是一个布尔类型值,指示集成的搜索栏是否会在滚动时隐藏。

UINavigationItem方法

UINavigationItem类包含以下方法来配置外观。

序号方法描述
1func setHidesBackButton(Bool, animated: Bool)它接受一个布尔值,指示是否隐藏后退按钮,并且该函数相应地隐藏后退按钮。
2func setLeftBarButtonItems([UIBarButtonItem]?, animated: Bool)它将左侧栏按钮项显示到指定的UIBarButtonItem对象数组。它还可以选择动画处理过程。
3func setLeftBarButton(UIBarButtonItem?, animated: Bool)它将左侧栏按钮项显示到指定的UIBarButtonItem对象。它还可以选择动画处理过程。
4func setRightBarButtonItems([UIBarButtonItem]?, animated: Bool)它将右侧栏按钮项显示到指定的UIBarButtonItem对象数组。它还可以选择动画处理过程。
5func setRightBarButton(UIBarButtonItem?, animated: Bool)它将右侧栏按钮项显示到指定的UIBarButtonItem对象。它还可以选择动画处理过程。

示例

在此示例中,我们将为导航项对象定义自定义的左侧和右侧栏按钮项。

NavItemController.swift

输出

Navigation Item