Phương pháp phân chia để quản lý Storyboard

Khi App chúng ta lập trình phức tạp lên → số lượng view tăng lên, nếu chỉ đặt trong một Storyboard thì các view sẽ rất là khó nhìn. Chính vì vậy mà bài viết này mình xin giới thiệu đến các bạn giải pháp sử dụng Storyboard Reference để phân chia ra nhiều Storyboard cho việc quản lý trở nên dễ dàng hơn.

Demo

Cách làm

1. Tạo project mới dạng Tabbed Application rồi sau đó chúng ta xoá First ViewSecond View đi

2. Do đây là Tab App nên chúng ta sẽ tạo mỗi tab là một Storyboard, sử dụng phím ⌘+N để tạo ra 3 file Storyboard (A.Storyboard, B.Storyboard, C.Storyboard)

3. Sử dụng Storyboard Reference để thiệt lập cho 3 tab như hình dưới

4. Setting để 3 Storyboard Reference đó trỏ đến 3 Storyboard mà chúng ta vừa mới tạo mới

5. Sử dụng control + drag để kết nối Segue đến các Storyboard Reference

Setting đến 3 cái như nhau:

6. Setting các Storyboard tab đã tạo

Ở Settings View Controller check vào Is Initial View Controller Do đã được kết nối đến Tab Bar Controller nên ta thiết lập Tab Bar Item Tiện thể Nhập ID của Storyboard

Setting cho 2 Storyboard còn lại tương tự như vậy

Sửa đổi View của Tab lúc khởi động

Default thì tab đầu tiên bên trái chính là tab được hiển thị đầu tiên. Để thay đổi thì chúng ta sẽ can thiệp vào selectedIndex ở trong file AppDelegate.swift

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        if let initialTab = self.window!.rootViewController as? UITabBarController  {

            // 0 là vị trí đầu tiên ở bên trái
            initialTab.selectedIndex = 2 //đây là vị trí thứ 3 tính từ trái sang
        }
        return true
    }

    func applicationWillResignActive(_ application: UIApplication) {
    }

    func applicationDidEnterBackground(_ application: UIApplication) {
    }

    func applicationWillEnterForeground(_ application: UIApplication) {
    }

    func applicationDidBecomeActive(_ application: UIApplication) {
    }

    func applicationWillTerminate(_ application: UIApplication) {
    }
}

Thay đổi Storyboard load lúc khởi động

Khi không muốn sử dụng Tab Bar Controller để phân chia các Storyboard thì lúc khởi động chúng ta có thể tuỳ ý chỉ định cho các Storyboard nào đó mà chúng ta muôn

Để làm như vậy ta vào Project → Target → General → Main Interface để settings

Nguồn tham khảo

Qiita