UITabBarController以编程方式

UITabBarControllers是在视图控制器之间导航的好方法。 iOS Clock应用程序就是一个很好的例子。 在线上有很多教程,介绍如何使用界面生成器来设置UITabBarControllers,但是最好也知道如何从头开始构建它。 实际上很简单!

TabBarController

苹果给出了惊人的描述。

您可以使用标签栏控制器将您的应用组织为一种或多种不同的操作模式。 标签栏控制器的视图层次结构是自包含的。 它由选项卡栏控制器直接管理的视图和由您提供的内容视图控制器管理的视图组成。 每个内容视图控制器管理一个不同的视图层次结构,选项卡栏控制器协调视图层次结构之间的导航

因此,让我们开始吧! 我们将对UITabBarController进行子类化,以便轻松识别谁在管理选项卡。 因此,在Xcode中,继续创建一个名为TabBarController的新Swift类。 附带说明,请确保在启动用于编程视图控制器的Xcode应用程序时更新AppDelegate和info.plist。

使用NSLayoutAnchor删除情节提要
界面生成器是Apple提供的出色工具。 但是,了解… medium.com 的程序化方面也很重要

查看控制器

本质上,我们所需要做的就是创建视图控制器的实例,并将其分配给viewControllers属性。 因此,让我们首先创建将连接到tabBarController的视图控制器。 继续并创建DownloadsViewController,BookmarksViewController和收藏夹视图控制器。 在每个视图控制器中,更新viewDidLoad以更新视图的backgroundColor和title。 下面的示例适用于DownloadsViewController,但是BookmarksViewController和favoriteViewController应该分别具有标题Bookmarks和收藏夹。

  view.backgroundColor = UIColor.whiteColor() 
  self.title =“下载” 

在TabBarController的viewDidLoad中,添加以下内容

 让downloadViewController = DownloadsViewController() 
  downloadViewController.tabBarItem = UITabBarItem(tabBarSystemItem:.Downloads,标签:0) 
 让bookmarkViewController = BookmarksViewController() 
  bookmarkViewController.tabBarItem = UITabBarItem(tabBarSystemItem:.Bookmarks,标签:1) 
 让收藏夹视图控制器=收藏夹视图控制器() 
  favoriteViewControllers.tabBarItem = UITabBarItem(tabBarSystemItem:.Favorites,标签:2) 
 让viewControllerList = [downloadViewController,bookmarkViewController,favoriteViewControllers] 
  viewControllers = viewControllerList 

注意,我们正在设置每个viewController的tabBarItem。 Apple将其定义如下:

当添加到标签栏控制器时,代表视图控制器的标签栏项目…默认值是显示视图控制器标题的标签栏项目。

由于我们已经通过title属性在每个单独的ViewController中设置了viewControllers的标题,因此我们不必为此担心。 另外,我也使用Apple为选项卡提供的默认系统项目。

继续并运行该应用程序以查看以下显示。

导航栏

标签栏正在显示并正常运行; 但是,没有导航栏似乎不太正确。 由于导航栏是免费提供的,因此我们可以通过将视图控制器置于导航控制器中来快速解决此问题。 我们还将使用一个很酷的Swift技巧来完成此任务。 在TabBarController中,将以下内容替换为self.viewControllers

 viewControllers = viewControllerList.map {UINavigationController(rootViewController:$ 0)} 

在这里,我们使用Swift的漂亮地图。 这使我们可以为每个视图控制器创建一个导航控制器,并将其作为数组返回给self.viewControllers。 这就对了!