- vừa được xem lúc

Tab Bar Controller trong iOS

0 0 6

Người đăng: Duy Nhất

Theo Viblo Asia

Giới thiệu

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

1. Cấu trúc chung của Tab Bar Controller

Tab Bar Controller (UITabBarController) là một subclass của UIViewController và chứa một mảng các view controllers. Mỗi view controller đại diện cho một tab và được quản lý bởi tab bar controller. Cấu trúc cơ bản bao gồm:

  1. UITabBarController: Quản lý các view controllers và hiển thị tab bar ở 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 của 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 một dự án mới

Mở Xcode và tạo một dự án mới bằng cách chọn "Create a new Xcode project". Chọn "App" và nhấn "Next". Đặt tên cho dự án và chọn các tùy chọn khác theo ý muốn, sau đó nhấn "Next" và "Create".

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

Mở Main.storyboard. Xóa View Controller mặc định mà Xcode tạo ra. Kéo và thả một Tab Bar Controller từ Library vào Storyboard. Xcode sẽ tự động thêm hai View Controllers được kết nối với Tab Bar Controller dưới dạng các tab.

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

Chọn từng View Controller được kết nối với Tab Bar Controller. 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 từng tab.

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

Để thêm nhiều View Controllers vào Tab Bar Controller, kéo và thả các View Controllers mới vào Storyboard. Kết nối các View Controllers mới 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ừ popup menu.

3. Tạo Tab Bar Controller bằng Code

Bước 1: Thiết lập dự án

Tạo một dự án mới hoặc sử dụng dự án hiện tại.

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

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

HomeViewController.swift

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

SettingsViewController.swift

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)

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)

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ể tùy chỉnh màu sắc của Tab Bar bằng cách sử dụng thuộc tính tabBar.

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

2. Thêm hình ảnh và tiêu đề cho Tab Bar Item

Bạn có thể thêm hình ảnh và tiêu đề cho các mục trong Tab Bar.

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ể xử lý sự kiện khi người dùng chuyển đổi giữa các tab bằng cách sử dụng UITabBarControllerDelegate.

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("Selected tab: \(viewController.title ?? "")") }
}

6.Kết luận

Tab Bar Controller là một công cụ mạnh mẽ và linh hoạt để xây dựng giao diện người dùng trong các ứng dụng iOS. Bằng cách làm theo các bước trên, bạn có thể tạo và tùy chỉnh Tab Bar Controller để phù hợp với nhu cầu của ứng dụng. Hy vọng bài viết này cung cấp cho bạn những kiến thức cần thiết để bắt đầu làm việc với Tab Bar Controller trong iOS.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Create Certificates, Identifiers & Profiles App IOS

Mở đầu. Xin chào các bạn hôm này mình sẽ giới thiệu cho các bạn một cách tạo certificates, identifiers & profiles với tài khoản Apple Developer. Có tài khoản Apple Developer. Ai chưa có thì không cần đọc tiếp nha :.

0 0 41

- vừa được xem lúc

Chương 5 Object oriented programming

Chương 5 Object oriented programming. Tôi lần đầu tiên được giới thiệu về lập trình hướng đối tượng ở trường cao đẳng nơi tôi đã có một giới thiệu tóm tắc về c++.

0 0 30

- vừa được xem lúc

Hướng dẫn tạo link tracking nguồn cài đặt cho mobile app (xác định nguồn cài đặt cho mobile app)

Giới thiệu. Bạn đang chạy quá nhiều campaign cho ứng dụng mobile từ các mạng xã hội: facebook, twitter, ... các chiến dịch offline cũng như các chiến dịch online của bên thứ 3. Bạn không thể xác định được nguồn nào mang cho mình lượng install cao nhất. Vì nếu dùng shortlink thì chỉ đo được lượt clic

0 0 38

- vừa được xem lúc

SwiftUi: Bắt đầu từ những điều căn bản nhất. Phần 1

Trong bài này, bạn sẽ được tìm hiểu về việc tạo ra giao diện bằng việc khai báo và tuỳ chỉnh views, cách sử dụng các biến trạng thái để cập nhật giao diện thay vì dùng code. Tập sử dụng tính năng new preview và live preview, những trải nghiệm thú vị khi làm việc cùng với code và WYSIWYG layout.

0 0 65

- vừa được xem lúc

Những điều khác nhau cần biết giữa thiết kế ứng dụng Android và ứng dung iOS

Để tạo ra ứng dụng có trải nghiệm tốt nhất, tương thích với dòng thiết bị, bạn nên ghi nhớ sự khác biệt giữa 2 nền tảng iOS và Android. Các ứng dụng này không chỉ khác nhau ở phần trông như thế nào, chúng cũng khác nhau về cấu trúc và luồng ứng dụng.

0 0 33

- vừa được xem lúc

Những khó khăn khi làm dự án maintain ( dưới góc nhìn của một React Native Developer)

Đi làm một vài năm ở công ty outsource, minh thấy hầu như các anh em đều khá e ngại với các dự án maintain, nhất là thuộc hàng code "siêu thối", spec thuộc loại "siêu to khổng lồ ",... Và mình cũng thế, mình cũng đang "theo đuổi" một chú em với "chức năng siêu to kh

0 0 313