Skip to content

13.2_为标签栏添加多个视图控制器

准备工作:创建视图控制器

要为标签栏添加多个视图控制器,首先需要创建它们。你可以创建多个 UIViewController 的子类,每个子类代表一个独立的界面。这就像为你的应用程序准备不同的“房间”一样。 🏠

例如,你可以创建 HomeViewControllerSettingsViewControllerProfileViewController。每个控制器都将管理其自己的视图和逻辑。

swift
// HomeViewController.swift
import UIKit

class HomeViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemBlue
        title = "首页"
    }
}

// SettingsViewController.swift
import UIKit

class SettingsViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .systemGreen
        title = "设置"
    }
}

实例化并配置视图控制器

创建好视图控制器类后,你需要在 UITabBarController 中实例化它们。每个实例都将成为标签栏的一个选项卡。你可以根据需要配置每个视图控制器的属性,例如背景颜色或标题。

  • 实例化控制器: 使用 let homeVC = HomeViewController() 这样的语法来创建实例。
  • 设置标题: homeVC.title = "首页" 会在标签栏上显示对应的文本。
  • 嵌入导航控制器 (可选): 为了让每个选项卡拥有自己的导航堆栈,你可以将视图控制器嵌入到 UINavigationController 中。这非常有用,因为它允许你在每个选项卡内部进行 Push 和 Pop 操作。
swift
let homeVC = HomeViewController()
let settingsVC = SettingsViewController()
let profileVC = ProfileViewController() // 假设你已经创建了 ProfileViewController

将视图控制器添加到标签栏

现在,激动人心的时刻到了!你需要将这些准备好的视图控制器添加到 UITabBarControllerviewControllers 数组中。这个数组决定了标签栏上显示的所有选项卡及其顺序。

  1. 创建 UITabBarController 实例: let tabBarController = UITabBarController()
  2. 设置 viewControllers 数组: 将你的视图控制器实例(或包含它们的导航控制器实例)放入一个数组中,并将其赋值给 tabBarController.viewControllers
swift
// 在你的 AppDelegate 或 SceneDelegate 中
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    window = UIWindow(frame: UIScreen.main.bounds)
    let tabBarController = UITabBarController()

    let homeVC = HomeViewController()
    homeVC.tabBarItem = UITabBarItem(title: "首页", image: UIImage(systemName: "house.fill"), tag: 0)

    let settingsVC = SettingsViewController()
    settingsVC.tabBarItem = UITabBarItem(title: "设置", image: UIImage(systemName: "gearshape.fill"), tag: 1)

    let profileVC = ProfileViewController()
    profileVC.tabBarItem = UITabBarItem(title: "我的", image: UIImage(systemName: "person.fill"), tag: 2)

    // 嵌入导航控制器,提供独立的导航功能
    let homeNavController = UINavigationController(rootViewController: homeVC)
    let settingsNavController = UINavigationController(rootViewController: settingsVC)
    let profileNavController = UINavigationController(rootViewController: profileVC)

    tabBarController.viewControllers = [homeNavController, settingsNavController, profileNavController]
    window?.rootViewController = tabBarController
    window?.makeKeyAndVisible()
    return true
}

验证和运行你的应用

完成上述步骤后,运行你的应用程序。你将看到一个带有多个选项卡的标签栏。点击每个选项卡,应用程序会切换到相应的视图控制器,展示你为它们设计的界面。这真是太棒了!🚀

  • 检查选项卡数量: 确保标签栏上显示的选项卡数量与你添加到 viewControllers 数组中的控制器数量一致。
  • 验证切换功能: 点击每个选项卡,确认视图控制器能够正确切换。
  • 观察导航栏: 如果你使用了 UINavigationController,你会发现每个选项卡都有自己的导航栏,并且可以独立进行导航操作。

通过这种方式,你可以轻松地构建一个拥有多个功能模块的复杂 iOS 应用程序。大约 80% 的主流 iOS 应用都采用了这种多标签页的结构,例如微信、淘宝和抖音。掌握这个技巧,你就能构建出用户体验极佳的应用!👍

本站使用 VitePress 制作