Каждый раз, когда вы добавляете штрих-код с помощью FirstViewController()
, вы создаете новый экземпляр FirstViewController
, вы можете использовать делегирование для обновления исходного экземпляра.
Сначала создайте протокол с вашим add
методом
protocol BarcodeScanDelegate: class {
func add(_ code: String)
}
Расширение FirstViewController
для наследования BarcodeScanDelegate
и перемещение метода add
extension FirstViewController: BarcodeScanDelegate {
func add (_ code: String) {
let tic = Ticket(number: code, name: "First Name - LastName", date: "May 18th, 2019, 10 am")
self.data.append(tic)
self.tableView.reloadData()
}
}
В контроллере представления 2 (сканирование штрих-кода) создайте переменную, которая хранит ссылку на вышеуказанный делегат
class BarcodeScanViewController: UIViewController {
weak var delegate: BarcodeScanDelegate?
func addScannedBarcode() {
self.delegate?.add("BARCODE_HERE")
}
}
Теперь, когда вы запускаете 2-й (просмотр штрих-кода) контроллер, присвойте его переменной delegate
значение self
class FirstViewController: UIViewController {
@IBOutlet var tableView: UITableView!
...
@objc func launchBarcodeScanner() {
let viewController = BarcodeViewController()
// or use following if you are using storyboard
// let viewController = self.storyboard!.instantiateViewController(withIdentifier: "BarcodeVC") as! BarcodeViewController
viewController.delegate = self // <<<
self.present(viewController, animated: true)
}
}