Невозможно перенести данные обратно в ViewController - PullRequest
0 голосов
/ 04 мая 2018

У меня возникают проблемы при попытке передать данные обратно в ViewController (от BarCodeScannerViewController до TableViewController)

SecondVC (BarCodeScannerViewController.swift):

@objc func SendDataBack(_ button:UIBarButtonItem!) {
    if let presenter = self.presentingViewController as? TableViewController {
           presenter.BarCode = "Test"
    }
    self.dismiss(animated: true, completion: nil)
}

FirstVC (TableViewController.swift):

// The result is (BarCode - )
var BarCode: String = ""

override func viewWillAppear(_ animated: Bool) {
     super.viewWillAppear(animated)
     print("BarCode - \(BarCode)")
}

При каждом запуске ViewWillAppear значение не устанавливается, что может быть причиной этой проблемы?

1 Ответ

0 голосов
/ 04 мая 2018

Вы должны использовать шаблон делегата. Я сомневаюсь в вашем коде выше, что self.presentingViewController на самом деле установлен.

Пример использования шаблона делегата для этого:

// BarCodeScannerViewController.swift

protocol BarcodeScanningDelegate {
    func didScan(barcode: String)
}

class BarCodeScannerViewController: UIViewController {
    delegate: BarcodeScanningDelegate?

    @objc func SendDataBack(_ button:UIBarButtonItem!) {
        delegate?.didScan(barcode: "Test")
    }

}

// TableViewController

@IBAction func scanBarcode() {
    let vc = BarCodeScannerViewController()
    vc.delegate = self
    self.present(vc, animated: true)
}

extension TableViewController: BarcodeScanningDelegate {
    func didScan(barcode: String) {
        print("[DEBUG] - Barcode scanned: \(barcode)")
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...