Segue là gì

Xin chào chúng ta, bây giờ vào nội dung bài viết này mình sẽ giới thiệu các nhằm truyền dữ liệu xuất phát điểm từ một VC A -> VC B cùng ngược chở lại sử dụng segue.

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

Truyền dữ liệu trường đoản cú A -> B

Sử dụng SHOW SEGUE

Mình là một trong bạn ưu tiền về việc thực hiện file xib, storyboard. Nlỗi trong một dự án công trình, lúc mình thích di chuyển đến một màn hình hiển thị thì mình sẽ kéo segue trên storyboard mang lại nkhô hanh. Sau Khi đã kéo hoàn thành mình vẫn viết tên mang lại segue identifier (sử dụng để khẳng định xem chính là storyboard segue nào).

*
Lúc bấy giờ mình đang có 2 VC là A và B. Từ VC A bản thân nhấp chuột button sẽ di chuyển sang VC B và truyền theo 1 đoạn text thì bản thân vẫn có tác dụng nhỏng sau:

Trong VC A mình override lại func prepare for segue, nghỉ ngơi vào function này mình hoàn toàn rất có thể check theo segue identifier hoặc không, bản thân có thể truyền dữ liệu mang lại VC nhưng segue trỏ mang lại.,

import UIKitclass ViewControllerA: UIViewController override func viewDidLoad() super.viewDidLoad() // Do any additional cài đặt 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 chế tạo ra một function initData với một property tên là text nhằm hứng dữ liệu từ bỏ VC A. Hàm initData sẽ được Gọi trươc lúc viewDidLoad được hotline vậy yêu cầu bọn họ luôn luôn đem đc text không giống rỗng.import UIKitclass ViewControllerB: UIViewController var text = ""
IBOutlet weak var lbText: UILabel! override func viewDidLoad() super.viewDidLoad() // Do any additional setup 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 đề thực hiện modal segue thường xuyên là bạn có nhu cầu present lên một VC B được embed vào navigation controller đơn lẻ cùng với VC ngày nay. Dựa vào ví dụ bên trên, bản thân đang sửa lại storyboard cùng code trong VC A.
*

Trong VC A lúc này bản thân vẫn sửa code lại như sau:

import UIKitclass ViewControllerA: UIViewController override func viewDidLoad() super.viewDidLoad() // Do any additional setup 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 vắt vày sử dụng segue

Hai bí quyết sinh sống trên là bản thân hay hay được sử dụng vị mình là người có thói quen cần sử dụng những gì đã làm được cấp cung ứng sẵn. Dường như, họ cũng có thể viết code nhằm truyền data từ VC A - > VC B
*
Hiện nay bản thân sẽ xoá đi segue đang tạo nên trước kia, với sửa code trong VC A như sau:

import UIKitclass ViewControllerA: UIViewController override func viewDidLoad() super.viewDidLoad() // Do any additional thiết lập 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 tài liệu tự B -> A

Sử dụng unwind segue.

Xem thêm: Cách Chế Biến Mắm Cá Lóc Thơm Ngon, Đậm Vị Đơn Giản Tại Nhà, Khó Cưỡng Với Các Món Ngon Từ Mắm Cá Lóc

Hiện nay bọn họ buộc phải truyền dữ liệu ngược từ B -> A. Mình thấy câu hỏi áp dụng segue này đang có hơi thọ, tuy vậy vô cùng ít bạn biết đến nó.Thì đầu tiên, nhằm sử dụng unwind segue, họ nên sinh sản 1 action ở trong VC A nhỏng sau:

import UIKitclass ViewControllerA: UIViewController
IBOutlet weak var lbPassBackText: UILabel! override func viewDidLoad() super.viewDidLoad() // Do any additional setup 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")
IBAction func unwindToVCA(_ unwindSegue: UIStoryboardSegue) if let vcB = unwindSegue.source as? ViewControllerB lbPassBackText.text = vcB.text Tiếp kia mình sửa lại storyboard nlỗi hình họa sau:

*
Ở vào storyboard bây giờ, mình tất cả một bar button thắng lợi mang tên là Unwind Segue, mình đang đề nghị kéo action của chính nó map cùng với action "unwindToVCA" trong ViewControllerA. Để có tác dụng đc thì mình sẽ giữ Ctrl cùng kéo nó vào phần exit của VC B bên trên storyboard.
*

Giờ trong VC B bản thân đang 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 thiết đặ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à tôi đã rất có thể truyền dữ liệu ngược từ bỏ B -> A.

Xem thêm: Cách Chiên Chả Cá Ngon Đúng Điệu, Cách Làm Chả Cá Chiên Thơm Dai Như Ngoài Tiệm

Kết

Nhỏng sinh hoạt trên mình đã đưa ra cách để sử dụng segue vào Việc truyền dữ liệu thân 2 Vc A và B. Ngoài bí quyết thực hiện unwind segue thì bọn họ còn có thể áp dụng những biện pháp khác như: delegate, closure...Cảm ơn chúng ta vẫn đọc cho đây, hy vọng những gì mình share ngơi nghỉ bên trên đã hoàn toàn có thể giúp chúng ta được một chút ít.


Chuyên mục: ĐỊNH NGHĨA