Segue là gì

Xin xin chào các bạn, hôm nay vào nội dung bài viết này bản thân đã giới thiệu những nhằm truyền dữ liệu xuất phát điểm từ 1 VC A -> VC B với ngược lại thực hiện segue.

Bạn đang xem: Segue là gì

Truyền dữ liệu từ A -> B

Sử dụng SHOW SEGUE

Mình là 1 bạn chủ yếu về việc sử dụng file xib, storyboard. Nhỏng trong 1 dự án, Lúc mình muốn di chuyển cho một màn hình thì mình vẫn kéo segue trên storyboard mang đến nkhô nóng. Sau khi đã nâng xong bản thân vẫn đánh tên mang lại segue identifier (thực hiện để khẳng định coi đó là storyboard segue nào).

*
Hiện nay bản thân đang có 2 VC là A với B. Từ VC A bản thân click chuột button vẫn dịch chuyển quý phái VC B với truyền theo 1 đoạn text thì mình vẫn có tác dụng nhỏng sau:

Trong VC A bản thân override lại func prepare for segue, sống trong function này mình trọn vẹn có thể check theo segue identifier hoặc không, mình rất có thể truyền dữ liệu đến VC mà lại segue trỏ đến.,

import UIKitclass ViewControllerA: UIViewController override func viewDidLoad() super.viewDidLoad() // Do any additional thiết lập after loading the view, typically from a nib. override func prepare(for segue: UIStoryboardSegue, sender: Any?) guard let vcB = segue.destination as? ViewControllerB else return vcB.initData(text: "Demo") Trong VC B, bản thân khởi tạo ra một function initData với một property thương hiệu là text để hứng tài liệu từ bỏ VC A. Hàm initData sẽ tiến hành call trươc khi viewDidLoad được hotline vậy phải bọn họ luôn mang đc text không giống trống rỗng.import UIKitclass ViewControllerB: UIViewController var text = ""
IBOutlet weak var lbText: UILabel! override func viewDidLoad() super.viewDidLoad() // Do any additional thiết lập after loading the view. self.lbText.text = text func initData(text: String) self.text = text

Sử dụng modal segue

Trong dự án, vấn đề sử dụng modal segue hay là bạn có nhu cầu present lên một VC B được embed trong navigation controller cá biệt cùng với VC ngày nay. Dựa vào ví dụ trên, bản thân sẽ sửa lại storyboard và code trong VC A.
*

Trong VC A bây giờ mình sẽ sửa code lại nhỏng sau:

import UIKitclass ViewControllerA: UIViewController override func viewDidLoad() super.viewDidLoad() // Do any additional thiết đặt after loading the view, typically from a nib. override func prepare(for segue: UIStoryboardSegue, sender: Any?) if let navigationController = segue.destination as? UINavigationController, let editContactViewController = navigationController.viewControllers.first as? ViewControllerB vcB.initData(text: "Demo")

Sử dụng code cố kỉnh vì dùng segue

Hai bí quyết sống trên là mình hay hay được dùng do bản thân là người có kiến thức cần sử dụng mọi gì đã có được cấp cho hỗ trợ sẵn. Dường như, chúng ta cũng hoàn toàn có thể viết code để truyền data trường đoản cú VC A - > VC B
*
Lúc này mình sẽ xoá đi segue đã tạo ra trước đó, với sửa code vào VC A nlỗi sau:

import UIKitclass ViewControllerA: UIViewController override func viewDidLoad() super.viewDidLoad() // Do any additional cài đặt after loading the view, typically from a nib.
IBAction func actionGoToVCB(_ sender: Any) let storyboard = UIStoryboard(name: "Main", bundle: nil) if let vcB = storyboard.instantiateViewController(withIdentifier: "ViewControllerB") as? ViewControllerB vcB.initData(text: "Demo") let navigationViewController = UINavigationController(rootViewController: vcB) show(navigationViewController, sender: nil)

Truyền dữ liệu từ B -> A

Sử dụng unwind segue.

Xem thêm: 12, 113, 114 Là Số Gì ? 111, 112, 113, 115, 114 Là Gì

Lúc này chúng ta đề xuất truyền dữ liệu ngược tự B -> A. Mình thấy vấn đề áp dụng segue này đang có khá thọ, tuy nhiên hết sức không nhiều chúng ta nghe biết nó.Thì đầu tiên, để sử dụng unwind segue, chúng ta buộc phải chế tạo ra 1 action làm việc trong VC A như sau:

import UIKitclass ViewControllerA: UIViewController
IBOutlet weak var lbPassBackText: UILabel! override func viewDidLoad() super.viewDidLoad() // Do any additional thiết lập after loading the view, typically from a nib. override func prepare(for segue: UIStoryboardSegue, sender: Any?) if let navigationController = segue.destination as? UINavigationController, let vcB = navigationController.viewControllers.first as? ViewControllerB vcB.initData(text: "Demo")
IBkích hoạt func unwindToVCA(_ unwindSegue: UIStoryboardSegue) if let vcB = unwindSegue.source as? ViewControllerB lbPassBackText.text = vcB.text Tiếp kia bản thân sửa lại storyboard như hình ảnh sau:

*
Tại trong storyboard lúc này, mình bao gồm một bar button vật phẩm mang tên là Unwind Segue, mình sẽ buộc phải kéo action của chính nó map với action "unwindToVCA" vào ViewControllerA. Để có tác dụng được thì bản thân sẽ giữ lại được Ctrl và kéo nó vào phần exit của VC B trên storyboard.
*

Giờ vào VC B bản thân sẽ override thêm func prepare for segue

import UIKitclass ViewControllerB: UIViewController var text = ""
IBOutlet weak var lbText: UILabel! override func viewDidLoad() super.viewDidLoad() // Do any additional cài đặt after loading the view. self.lbText.text = text func initData(text: String) self.text = text override func prepare(for segue: UIStoryboardSegue, sender: Any?) self.text = "LALALAALALA" => Vậy nên là mình đã rất có thể truyền tài liệu ngược trường đoản cú B -> A.

Xem thêm: Tải Download Phần Mềm Tạo Đề Thi Trắc Nghiệm One Minutes Pro

Kết

Như sinh hoạt bên trên tôi đã đưa ra phương pháp để thực hiện segue trong câu hỏi truyền dữ liệu giữa 2 Vc A và B. Ngoài phương pháp áp dụng unwind segue thì chúng ta còn hoàn toàn có thể thực hiện các phương pháp khác như: delegate, closure...Cảm ơn chúng ta sẽ hiểu mang lại trên đây, hy vọng những gì mình share làm việc trên đang có thể giúp chúng ta được 1 chút ít.


Chuyên mục: HOT