Giới thiệu về View Controller trong lập trình iOS


View Controller là một liên kết quan trọng giữa dữ liệu của một ứng dụng và giao diện của nó. Bất cứ khi nào một ứng dụng iOS hiển thị một giao diện người dùng, nội dung hiển thị được quản lý bởi một view controller hoặc một nhóm các view controller phối hợp với nhau. Do đó, view controller cung cấp một framework quan trọng mà trên đó bạn xây dựng các ứng dụng.

View Controller là gì?

iOS cung cấp các view controller tạo sẵn để hỗ trợ phần giao diện người dùng chuẩn, chẳng hạn như chuyển hướng (navigator) và các thanh tab. Là một phần của việc phát triển ứng dụng, bạn cũng có thể thực hiện một hoặc nhiều view controller tuỳ chọn để hiển thị các nội dung cụ thể cho ứng dụng của bạn.

IntroViewControler1


View Controller là đối tượng controller truyền thống trong design pattern Model-View-Controller (MVC), nhưng nó còn có thể làm nhiều việc hơn nữa. View controller cung cấp nhiều hành vi (behaviour) phổ biến cho tất cả các ứng dụng iOS. Thông thường, những hành vi này được xây dựng vào các lớp cơ sở (base class). Đối với một số hành vi, lớp cơ sở cung cấp một phần của giải pháp và lớp con view controller của bạn thực hiện mã tùy chỉnh để cung cấp các phần còn lại. Ví dụ, khi người dùng xoay thiết bị, việc thực hiện tiêu chuẩn cố gắng xoay giao diện người dùng, tuy nhiên, lớp con của bạn quyết định khi nào các giao diện người dùng cần được quay và nếu như vậy thì cấu hình của view nên thay đổi theo chiều hướng (orientation) mới như thế nào. Như vậy, sự kết hợp của một lớp cơ sở cấu trúc và một lớp con cụ thể làm cho nó dễ dàng cho bạn để tùy chỉnh hành vi ứng dụng của bạn trong mà vẫn phù hợp với các hướng dẫn thiết kế nền tảng.

Cơ bản về View Controller

Ứng dụng đang chạy trên các thiết bị iOS bị hạn chế về không gian màn hình để hiển thị nội dung và do đó phải được sáng tạo trong cách trình bày thông tin cho người sử dụng. Ứng dụng có rất nhiều thông tin để hiển thị do đó chỉ hiển thị một phần để bắt đầu và sau đó hiển thị hay ẩn nội dung bổ sung khi người dùng tương tác các ứng dụng. Đối tượng view contrller cung cấp cơ sở hạ tầng để quản lý nội dung và phối hợp hiển thị hay ẩn đi của nó. Do có các lớp view controller khác nhau kiểm soát các phần riêng biệt của giao diện người dùng của bạn, bạn chia giao diện người dùng của bạn thành các phần nhỏ hơn và dễ dàng quản lý hơn.

Trước khi bạn có thể sử dụng view controller trong ứng dụng của bạn, bạn cần một sự hiểu biết cơ bản về các lớp chính được sử dụng để hiển thị nội dung trong một ứng dụng iOS, bao gồm cả các window và view. Một phần quan trọng của bất kỳ sự thực thi view controller là để quản lý các view được sử dụng để hiển thị nội dung. Tuy nhiên, quản lý view không phải là công việc duy nhất view controller thực hiện. Hầu hết các view controller đều có thể giao tiếp và phối hợp với các view controller khác khi quá trình dịch chuyển xảy ra. Bởi vì việc quản lý các kết nối giữa các phần tử mà view controller quản lý hay giữa các view controller với nhau đôi khi là một việc rất khó khăn. Thay vào đó, chúng ta có thể sử dụng Interface Builder để tạo ra storyboard. Các storyboard làm cho việc quản lý view controller dễ dàng hơn, giúp chúng ta dễ dàng dung các mối quan hệ trong ứng dụng của bạn, đơn giản hóa các nỗ lực cần thiết để khởi tạo các đối tượng tại thời gian chạy. Hình dưới đây sẽ minh hoạ một view controller đơn giản bao gồm một target window và view chứa nội dung:

IntroViewControler2

View Controller quản lý các View

Mỗi view controller tổ chức và điều khiển một view; view này thường là view gốc của cây phân cấp view. View controller là đối tượng controller trong mô hình MVC, nhưng một view controller cũng có nhiệm vụ cụ thể mà iOS hy vọng nó thực hiện. Những nhiệm vụ này được định nghĩa bởi lớp UIViewController mà tất cả các view controller thừa kế tới nó. Tất cả các view controller thực hiện nhiệm vụ xem và quản lý nguồn tài nguyên. Minh hoạ sau đây là sự cập nhật của min hoà trên diễn tả một view controller gắn liền với một window ẽ tự động thêm view của nó như là một subview của window:

IntroViewControler3

Phân loại View Controller

View controller, cả những đối tượng được cung cấp bởi iOS hay do bạn tạo nên, có thể được chia làm hai loại chung là categories—content view controllers và container view controllers. Minh hoạ sau sẽ cho các bạn thấy các lớp view controller sẵn có trong UIKit framework:

IntroViewControler4

Content View Controllers

Content view controller trình bày nội dung trên màn hình bằng cách sử dụng một view hay một nhóm các view được tổ chức thành một hệ thống view. Các controller được mô tả đến thời điểm này đều là content view controller. Một content view controller thường biết về tập con dữ liệu của ứng dụng có liên quan đến vai trò của controller đóng trong ứng dụng.

Dưới đây là những ví dụ phổ biến mà ứng dụng của bạn sử dụng content view controller:

  • Để hiển thị dữ liệu cho người sử dụng
  • Để thu thập dữ liệu từ người sử dụng
  • Để thực hiện một thao tác cụ thể
  • Để điều hướng giữa một tập hợp các lệnh có sẵn hoặc tùy chọn, chẳng hạn như trên màn hình khởi động cho một trò chơi
  • Content view controller phối hợp các đối tượng chính cho các ứng dụng của bạn bởi vì chúng biết các chi tiết cụ thể của dữ liệu và các thao tác ứng dụng của bạn cung cấp cho người sử dụng.

    Container View Controller

    Container view controller chứa nội dung thuộc sở hữu của các view controller khác. Các view controller khác được gán một cách rõ ràng tới container view controller như là con của nó. Một container view controller có thể là cả cha hay con của một container view controller khác. Cuối cùng, sự kết hợp của controller này thiết lập một hệ thống phân cấp các view controller.

    Mỗi loại container view controller thiết lập một giao diện người dùng mà các con của nó sẽ thao tác trong đó. Sự biểu diễn trực quan của giao diện người dùng này và thiết kế nó áp đặt lên các con của nó có thể khác nhau giữa các loại khác nhau.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: