13.2_为标签栏添加多个视图控制器
准备工作:创建视图控制器
要为标签栏添加多个视图控制器,首先需要创建它们。你可以创建多个 UIViewController 的子类,每个子类代表一个独立的界面。这就像为你的应用程序准备不同的“房间”一样。 🏠
例如,你可以创建 HomeViewController、SettingsViewController 和 ProfileViewController。每个控制器都将管理其自己的视图和逻辑。
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将视图控制器添加到标签栏
现在,激动人心的时刻到了!你需要将这些准备好的视图控制器添加到 UITabBarController 的 viewControllers 数组中。这个数组决定了标签栏上显示的所有选项卡及其顺序。
- 创建
UITabBarController实例:let tabBarController = UITabBarController()。 - 设置
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 应用都采用了这种多标签页的结构,例如微信、淘宝和抖音。掌握这个技巧,你就能构建出用户体验极佳的应用!👍