Cách quản lý nhiều Storyboard hiệu quả trong lập trình iOS

Trong iOS, để cần giúp cho giao diện trực quan và dễ nhìn hơn thì chúng ta cần phải có công cụ đặc thù để phân tách và quản lý nhiều màn hình nhỏ trong cùng một giao diện lớn. Để thực hiện điều này, chúng ta cần có Storyboard. Hãy cùng tìm hiểu cách tạo và quản lý nhiều Storyboard trong lập trình iOS qua bài viết dưới đây nhé.

Storyboard trong lập trình iOS là gì?

Storyboard là phần thể hiện trực quan giao diện người dùng của ứng dụng iOS bên trong Xcode, dùng để quản lý nhiều màn hình (scene) và kết nối chúng lại với nhau. Một storyboard bao gồm một chuỗi các màn hình, mỗi màn hình đại diện cho liên kết View Controller và các chế độ xem của nó; các màn hình được kết nối bởi các đối tượng segue, thể hiện sự chuyển đổi giữa hai View Controller. Segue là yếu tố giúp để hiệu ứng chuyển cảnh và truyền dữ liệu qua lại giữa các màn hình.

quản lý nhiều storyboard

Xcode cung cấp một trình chỉnh sửa trực quan cho storyboard, nơi bạn có thể bố trí và thiết kế giao diện người dùng của ứng dụng bằng cách thêm các View Controller như nút, chế độ xem bảng và chế độ xem văn bản vào các màn hình. Ngoài ra, storyboard còn cho phép bạn kết nối một chế độ xem với bộ điều khiển đối tượng và quản lý việc truyền dữ liệu giữa các View Controller. Sử dụng storyboard là cách được khuyến nghị để thiết kế giao diện người dùng của ứng dụng vì chúng cho phép bạn trực quan hóa diện mạo và luồng giao diện người dùng của mình trên một khung vẽ.

Trên iPhone, mỗi một màn hình tương ứng với giá trị nội dung riêng biệt hiển thị trên toàn màn hình. Riêng trên iPad, nhiều màn hình có thể xuất hiện trên màn hình lớn cùng một lúc — ví dụ: khi bật cửa sổ View Controller lên, thì lúc này mỗi màn hình sẽ có một dock, nơi hiển thị các biểu tượng đại diện cho các đối tượng cấp cao nhất của màn hình. Dock được sử dụng chủ yếu để kết nối hành động và lối ra giữa View Controller và các chế độ xem khác nhau của nó. Giống như với tất cả các đối tượng được tải từ một storyboard, để hoàn tất việc khởi tạo bộ điều khiển chế độ xem được tải từ một bảng phân cảnh, bạn ghi đè lên awakeformNib.

Bạn cũng có thể đặt kiểu chuyển cảnh trên một segue. Ngoài ra, bạn có thể phân lớp đối tượng segue để thực hiện chuyển đổi tùy chỉnh. Bạn có thể truyền dữ liệu giữa các cảnh bằng phương thức prepareForSegue:sender:. Phương pháp này cho phép bạn tùy chỉnh thiết lập của View Controller tiếp theo trước khi nó xuất hiện trên màn hình. Quá trình chuyển đổi thường xảy ra do một số tác động, chẳng hạn như nhấn nút, nhưng bạn có thể bắt buộc chuyển đổi theo chương trình bằng cách dùng lệnh performanceSegueWithIdentifier: sender: trên View Controller.

Cách quản lý nhiều Storyboard trong lập trình IOS

Theo các Senior Developers tại Groovetechnology.com (besp IOS Mobile App development  – Australia) thì khi ứng dụng của bạn có quá nhiều màn hình trong cùng một Storyboard thì việc quản lý nhiều màn hình như vậy sẽ gặp nhiều khó khăn khi không thể bao quát toàn bộ màn hình, và giao diện của ứng dụng cũng sẽ kém trực quan và hiệu quả, đồng thời việc điều hướng (navigation) giữa các màn hình cũng sẽ trở nên phức tạp hơn vì quá rối mắt. Để quản lý nhiều Storyboard trong lập trình IOS, chúng ta thông thường sẽ có 2 cách.

Tách Storyboard

Trong lập trình, thuật ngữ refactor có nghĩa là lấy mã hiện có và cải thiện nó mà đảm bảo không thay đổi hành vi của nó. Chúng tôi có thể áp dụng vào việc tách và tái cấu trúc cho Storyboard. Chúng tôi sẽ cấu trúc lại Storyboard của mình bằng cách tách bớt các màn hình từ một storyboard hiện tại thành storyboard mới, để mỗi tab trong ứng dụng của chúng tôi sẽ có tệp storyboard riêng.

storyboard

Thông thường, một ứng dụng bao gồm hai Storyboard: Main.storyboard và LaunchScreen.storyboard. Trong đó, Main.storyboard chứa giao diện người dùng của ứng dụng và đó là Storyboard mà chúng tôi tập trung vào trong hướng dẫn này. Để chia Storyboard hiện có thành các phần nhỏ hơn, trước tiên chúng ta cần chọn màn hình (hoặc nhiều màn hình) sẽ được chuyển vào một Storyboard mới và thay thế bằng một tham chiếu Storyboard.

Sau đó, bạn chọn cảnh Note View Controller trong Main.storyboard và chọn Refactor to Storyboard … từ menu Editor của Xcode. Xcode sẽ nhắc bạn đặt tên cho Storyboard mà Note View Controller được chuyển đến. Đặt tên cho Storyboard là NoteViewController.storyboard và nhấp vào Save. Bằng cách cấu trúc lại cảnh Note View Controller thành Storyboard của riêng nó, Xcode thực hiện hai việc cho chúng tôi:

  • Tạo ra một Storyboard mới, NoteViewController.storyboard
  • Thay thế màn hình trong Main.storyboard bằng một tham chiếu Storyboard

Thú vị hơn là Storyboard Reference đã thay thế màn hình Note View Controller trong Main.storyboard. Mở Main.storyboard, chọn Storyboard Reference và mở Trình kiểm tra thuộc tính ở bên phải. Nếu bạn mở NoteViewController.storyboard, bạn có thể tự mình thấy rằng nó có chứa màn hình Note View Controller. Lưu ý rằng Note View Controller là bộ điều khiển chế độ xem ban đầu của Storyboard.

Sau khi thực hiện các bước trên, bạn có thể thu nhỏ và định vị lại Storyboard mới để xem tất cả các màn hình của nó. Sự sắp xếp của các màn hình và các segues của chúng giống hệt như trong Storyboard gốc.

Tự tạo liên kết cho Storyboard

Trong cách này, ngay từ đầu, chúng ta sẽ tự tạo một Storyboard mới, sau đó liên kết với Storyboard hiện có bằng cách tận dụng Storyboard Reference. Storyboard Reference là đối tượng giúp bạn tạo liên kết với Storyboard nào đó. Nó có ba thuộc tính:

storyboard

  • Storyboard cho biết Storyboard nào tham chiếu đến bảng phân cảnh Storyboard.
  • ID được tham chiếu chỉ đến mã nhận dạng của cảnh trong Storyboard được tham chiếu. Thuộc tính này hiện đang trống, có nghĩa là bộ điều khiển view controller ban đầu là màn hình đích của tham chiếu Storyboard.
  • Gói trỏ đến gói mà Storyboard được tham chiếu thuộc về. Nếu để trống thuộc tính này, nó trỏ đến gói mà Storyboard chứa tham chiếu Storyboard thuộc về.

Sử dụng Storyboard Reference, bạn cần thực hiện ba bước dưới đây:

  • Tạo Storyboard mới trong ứng dụng của bạn, ví dụ: storyboard. Bên trong có tạo một view controller theo yêu cầu riêng của bạn và cung cấp cho nó một mã nhận dạng Storyboard.
  • Trong storyboard, hãy kéo một Storyboard Reference. Trong trình kiểm tra thuộc tính, hãy chọn Storyboard mới của bạn từ trình đơn, sau đó nhập số nhận dạng Storyboard mục tiêu của bạn vào hộp ID được tham chiếu.
  • Storyboard Reference hiện có thể được coi như một view controller ở chế độ xem thông thường, vì vậy bạn có thể tạo kết nối với nó, chẳng hạn như Show segue.

Xcode sẽ kiểm tra cấu hình của bạn tại thời điểm xây dựng, vì vậy nếu bạn cố gắng tham chiếu một số nhận dạng Storyboard không tồn tại, dự án của bạn sẽ bị từ chối để tiếp tục thực hiện.

Storyboard Reference là một bổ sung đáng hoan nghênh cho Storyboard để giúp giao diện dễ nhìn và dễ hiểu hơn. Dưới đây là những lợi ích tức thì Storyboard Reference:

  • Chia các Storyboard phức tạp thành các Storyboard nhỏ hơn
  • Chuyển đến các màn hình cụ thể trong Storyboard
  • Tái sử dụng Storyboard và màn hình
  • Loại bỏ hoặc giảm xung đột hợp nhất khi làm việc với nhiều nhà phát triển trong một dự án. Storyboard và kiểm soát nguồn không phải lúc nào cũng đi đôi với nhau. Storyboard Reference sẽ giúp việc này trở nên dễ dàng hơn bằng cách thêm khả năng chia Storyboard thành các phần có thể quản lý được.

Mặc dù Storyboard Reference giải quyết được vấn đề khó sử dụng Storyboard và nó trở nên phức tạp với kiểm soát nguồn, nhưng chúng không giải quyết được vấn đề Storyboard buộc ứng dụng của bạn phải chạy theo một hướng nhất định. Vì vậy, bạn nên xem xét một mô hình điều phối viên thay thế hay một điều gì đó tương tự.

Hy vọng những thông tin trên đây của chúng tôi sẽ giúp bạn quản lý nhiều Storyboard trong lập trình iOS vẫn hiệu quả và dễ dàng nhé.