Xin xin chào chúng ta, hôm nay vào nội dung bài viết này mình sẽ chỉ dẫn những nhằm truyền dữ liệu từ một VC A -> VC B cùng ngược lại áp dụng segue.
Bạn đang xem: Segue là gì
Truyền tài liệu từ bỏ A -> B
Sử dụng SHOW SEGUE
Mình là một trong tín đồ chủ yếu về vấn đề thực hiện file xib, storyboard. Như trong một dự án công trình, lúc mình thích dịch chuyển đến một screen thì bản thân đang kéo segue bên trên storyboard đến nkhô nóng. Sau lúc đã kéo xong bản thân đã đánh tên mang lại segue identifier (sử dụng nhằm khẳng định coi chính là storyboard segue nào).

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?) guard let vcB = segue.destination as? ViewControllerB else return vcB.initData(text: "Demo") Trong VC B, mình khởi chế tạo một function initData với một property tên là text để hứng dữ liệu từ VC A. Hàm initData sẽ được điện thoại tư vấn trươc lúc viewDidLoad đc Call vậy phải bọn họ luôn lấy đc text khác trống rỗng.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
Sử dụng modal segue
Trong dự án, câu hỏi thực hiện modal segue thường xuyên là bạn muốn present lên một VC B được embed trong navigation controller riêng lẻ cùng với VC hiện giờ. Dựa vào ví dụ bên trên, bản thân đã sửa lại storyboard với code trong VC A.
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?) if let navigationController = segue.destination as? UINavigationController, let editContactViewController = navigationController.viewControllers.first as? ViewControllerB vcB.initData(text: "Demo")
Sử dụng code nỗ lực vày sử dụng segue
Hai cách sinh sống trên là mình hay thường dùng vì chưng bản thân là người dân có kiến thức sử dụng mọi gì đã làm được cấp cung cấp sẵn. Dường như, họ cũng có thể viết code nhằm truyền data từ bỏ VC A - > VC B
import UIKitclass ViewControllerA: UIViewController override func viewDidLoad() super.viewDidLoad() // Do any additional thiết lập after loading the view, typically from a nib.
IBkích hoạt 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: Năm Sinh, Tên Thật, Chiều Cao Của Lương Bích Hữu, Tiểu Sử Lương Bích Hữu
Lúc bấy giờ chúng ta cần truyền tài liệu ngược tự B -> A. Mình thấy việc thực hiện segue này vẫn tất cả khá thọ, tuy nhiên cực kỳ không nhiều chúng ta biết đến nó.Thì thứ nhất, để áp dụng unwind segue, họ nên tạo thành 1 action ở vào VC A nlỗi sau:import UIKitclass ViewControllerA: UIViewController
IBOutlet weak var lbPassBackText: UILabel! 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?) 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 bản thân sửa lại storyboard như hình họa sau:


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 override func prepare(for segue: UIStoryboardSegue, sender: Any?) self.text = "LALALAALALA" => vì vậy là mình đã rất có thể truyền dữ liệu ngược trường đoản cú B -> A.
Kết
Như làm việc bên trên tôi đã chỉ dẫn phương pháp để áp dụng segue vào vấn đề truyền dữ liệu thân 2 Vc A với B. Ngoài cách thực hiện unwind segue thì chúng ta còn có thể sử dụng các giải pháp khác như: delegate, closure...Cảm ơn các bạn đã đọc đến đây, hy vọng hầu như gì bản thân chia sẻ sống bên trên đang hoàn toàn có thể giúp các bạn được 1 chút ít.