Xin xin chào các bạn, bây giờ trong bài viết này bản thân đã chỉ dẫn các nhằm truyền tài liệu từ 1 VC A -> VC B với ngược lại áp dụng segue.

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

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

Sử dụng SHOW SEGUE

Mình là một tín đồ chủ yếu về câu hỏi áp dụng tệp tin xib, storyboard. Nlỗi trong một dự án công trình, Khi bạn muốn di chuyển cho một màn hình thì bản thân đang kéo segue trên storyboard mang đến nkhô hanh. Sau Lúc đã nâng hoàn thành mình đã đánh tên mang đến segue identifier (sử dụng nhằm xác định coi chính là storyboard segue nào).

*
Trong thời điểm này mình đang sẵn có 2 VC là A và B. Từ VC A mình bấm vào button vẫn dịch rời quý phái VC B và truyền theo 1 đoạn text thì bản thân đang có tác dụng nlỗi sau:

Trong VC A bản thân override lại func prepare for segue, sinh hoạt vào function này mình trọn vẹn có thể kiểm tra theo segue identifier hoặc ko, bản thân rất có thể truyền tài liệu đến VC nhưng mà segue trỏ cho.,

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 ra một function initData cùng một property tên là text để hứng dữ liệu tự VC A. Hàm initData sẽ tiến hành điện thoại tư vấn trươc lúc viewDidLoad đc Điện thoại tư vấn vậy buộc 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 đặt after loading the view. self.lbText.text = text func initData(text: String) self.text = text

Sử dụng modal segue

Trong dự án, bài toán áp dụng modal segue hay là bạn muốn present lên một VC B được embed vào navigation controller riêng lẻ với VC hiện giờ. Dựa vào ví dụ bên trên, bản thân sẽ sửa lại storyboard với code trong VC A.
*

Trong VC A hôm nay mình đang sửa code lại 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. 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 thế bởi cần sử dụng segue

Hai bí quyết ngơi nghỉ bên trên là mình thường thường dùng bởi vì mình là người dân có kinh nghiệm sử dụng các gì đã được cung cấp cung cấp sẵn. Hình như, bọn họ cũng hoàn toàn có thể viết code để truyền data trường đoản cú VC A - > VC B
*
Hiện giờ mình sẽ xoá đi segue vẫn chế tạo trước đó, cùng sửa code trong VC A nhỏng 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.
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ỏ B -> A

Sử dụng unwind segue.

Xem thêm: Top 15 Cách Chế Biến Mì Gói : 10 Món Ngon Chế Biến Từ Mì Gói Hấp Dẫn, Bổ Dưỡng

Lúc này bọn họ cần truyền dữ liệu ngược trường đoản cú B -> A. Mình thấy Việc áp dụng segue này vẫn tất cả khá lâu, mặc dù cực kỳ không nhiều bạn biết đến nó.Thì đầu tiên, nhằm thực hiện unwind segue, chúng ta buộc phải chế tạo 1 action sinh sống trong VC A như 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 đó bản thân sửa lại storyboard nlỗi hình ảnh sau:

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

Giờ vào VC B mình đã 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" => bởi thế là mình đã rất có thể truyền tài liệu ngược tự B -> A.

Xem thêm: Sway - Definition And Meaning

Kết

Nlỗi nghỉ ngơi bên trên mình đã giới thiệu cách để áp dụng segue trong vấn đề truyền dữ liệu thân 2 Vc A với B. Ngoài phương pháp sử dụng unwind segue thì bọn họ còn rất có thể áp dụng những phương pháp không giống như: delegate, closure...Cảm ơn các bạn sẽ gọi mang đến đây, mong muốn rất nhiều gì bản thân share làm việc trên đã hoàn toàn có thể góp chúng ta được một chút.