0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Hướng Dẫn Tạo và Tùy Chỉnh Tab Bar Controller trong iOS

Đăng vào 4 tuần trước

• 6 phút đọc

Giới thiệu

Tab Bar Controller là một thành phần giao diện người dùng quan trọng trong iOS, cho phép người dùng chuyển đổi giữa các màn hình ứng dụng dễ dàng thông qua các tab. Trong bài viết này, chúng ta sẽ khám phá chi tiết cách tạo và tùy chỉnh Tab Bar Controller từ những bước cơ bản đến nâng cao, bao gồm kiến trúc của Tab Bar Controller, quy trình tạo và cấu hình nó trong Storyboard cũng như bằng mã nguồn, và cách xử lý các sự kiện liên quan.

1. Cấu trúc Tổng Quan của Tab Bar Controller

Tab Bar Controller (UITabBarController) là một subclass của UIViewController, thực hiện vai trò quản lý một tập hợp các view controllers. Mỗi view controller ứng với một tab và được quản lý bởi tab bar controller. Cấu trúc chính của Tab Bar Controller bao gồm:

  1. UITabBarController: Quản lý các view controllers và hiển thị tab bar nằm ở dưới cùng của màn hình.
  2. UITabBar: Thanh chứa các tab (tab bar items) dưới cùng màn hình.
  3. UITabBarItem: Đại diện cho từng tab trong tab bar, bao gồm tiêu đề, hình ảnh và các thuộc tính khác.

2. Tạo Tab Bar Controller trong Storyboard

  • Bước 1: Tạo Dự Án Mới

Mở Xcode và chọn "Create a new Xcode project". Chọn "App" và tiếp tục để đặt tên cho dự án, sau đó hoàn tất các tùy chọn và nhấn "Create".

  • Bước 2: Thêm Tab Bar Controller vào Storyboard

Mở file Main.storyboard. Xoá View Controller mặc định được Xcode tạo ra. Kéo và thả Tab Bar Controller từ thư viện (Library) vào Storyboard. Xcode sẽ tự động thêm hai View Controllers được liên kết với Tab Bar Controller như là các tab.

  • Bước 3: Cấu Hình Các View Controllers

Chọn từng View Controller kết nối với Tab Bar Controller và thiết lập các thuộc tính như Title và Tab Bar Item để xác định tên và biểu tượng cho các tab tương ứng.

  • Bước 4: Thêm Các View Controllers Mới

Để bổ sung nhiều View Controllers vào Tab Bar Controller, kéo và thả thêm View Controllers mới vào Storyboard. Kết nối các View Controllers này với Tab Bar Controller bằng cách Ctrl-kéo từ Tab Bar Controller đến View Controller và chọn "view controllers" từ menu pop-up.

3. Tạo Tab Bar Controller bằng Mã Lệnh

Bước 1: Thiết Lập Dự Án

Bắt đầu với một dự án mới hoặc sử dụng dự án đã có.

Bước 2: Tạo Các View Controllers

Tạo các View Controllers bằng cách thêm các file Swift mới.

HomeViewController.swift

swift Copy
import UIKit

class HomeViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        title = "Home"
    }
}

SettingsViewController.swift

swift Copy
import UIKit

class SettingsViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        title = "Settings"
    }
}

Bước 3: Tạo Tab Bar Controller trong AppDelegate hoặc SceneDelegate

AppDelegate.swift (iOS 12 trở xuống)

swift Copy
import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        window = UIWindow(frame: UIScreen.main.bounds)
        
        let tabBarController = UITabBarController()
        
        let homeViewController = HomeViewController()
        homeViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 0)
        
        let settingsViewController = SettingsViewController()
        settingsViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 1)
        
        tabBarController.viewControllers = [homeViewController, settingsViewController]
        
        window?.rootViewController = tabBarController
        window?.makeKeyAndVisible()
        
        return true
    }
}

SceneDelegate.swift (iOS 13 trở lên)

swift Copy
import UIKit

class SceneDelegate: UIResponder, UIWindowSceneDelegate {
    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(windowScene: windowScene)
        
        let tabBarController = UITabBarController()
        
        let homeViewController = HomeViewController()
        homeViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .favorites, tag: 0)
        
        let settingsViewController = SettingsViewController()
        settingsViewController.tabBarItem = UITabBarItem(tabBarSystemItem: .more, tag: 1)
        
        tabBarController.viewControllers = [homeViewController, settingsViewController]
        
        window?.rootViewController = tabBarController
        window?.makeKeyAndVisible()
    }
}

4. Tùy Chỉnh Tab Bar Controller

1. Thay Đổi Màu Sắc của Tab Bar

Bạn có thể dễ dàng điều chỉnh màu sắc của Tab Bar bằng cách sử dụng thuộc tính tabBar. Ví dụ:

swift Copy
tabBarController.tabBar.tintColor = .systemBlue
tabBarController.tabBar.barTintColor = .white

2. Thêm Hình Ảnh và Tiêu Đề cho Tab Bar Item

Có thể thiết lập hình ảnh và tiêu đề cho các mục trong Tab Bar:

swift Copy
homeViewController.tabBarItem = UITabBarItem(title: "Home", image: UIImage(systemName: "house"), tag: 0)
settingsViewController.tabBarItem = UITabBarItem(title: "Settings", image: UIImage(systemName: "gear"), tag: 1)

5. Xử Lý Sự Kiện Khi Chuyển Tab

Bạn có thể theo dõi các sự kiện khi người dùng chuyển đổi giữa các tab bằng cách sử dụng UITabBarControllerDelegate. Phương thức sau cho phép bạn nhận biết khi một tab được chọn:

swift Copy
class SceneDelegate: UIResponder, UIWindowSceneDelegate, UITabBarControllerDelegate {
    var window: UIWindow?

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(windowScene: windowScene)
        
        let tabBarController = UITabBarController()
        
        let homeViewController = HomeViewController()
        homeViewController.tabBarItem = UITabBarItem(title: "Home", image: UIImage(systemName: "house"), tag: 0)
        
        let settingsViewController = SettingsViewController()
        settingsViewController.tabBarItem = UITabBarItem(title: "Settings", image: UIImage(systemName: "gear"), tag: 1)
        
        tabBarController.viewControllers = [homeViewController, settingsViewController]
        tabBarController.delegate = self
        
        window?.rootViewController = tabBarController
        window?.makeKeyAndVisible()
    }
    
    func tabBarController(_ tabBarController: UITabBarController, didSelect viewController: UIViewController) {
        print("Tab đã chọn: \(viewController.title ?? \"\")")
    }
}

6. Kết Luận

Tab Bar Controller là một công cụ mạnh mẽ trong việc thiết kế giao diện người dùng cho các ứng dụng iOS. Bằng cách áp dụng theo các bước hướng dẫn chi tiết trong bài viết này, bạn sẽ dễ dàng tạo và tùy chỉnh Tab Bar Controller theo nhu cầu phát triển ứng dụng của mình. Hy vọng rằng bài viết đã cung cấp những kiến thức bổ ích để bạn bắt đầu hành trình phát triển với Tab Bar Controller trong iOS.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào