Делегат для общения между 2 UIViews в Swift - PullRequest
0 голосов
/ 29 июня 2019

У меня есть два взгляда, кроме моего каркаса:

  1. JSQRCodeScannerView - вид с камеры
  2. JSQRCodeInstructionsView - это уменьшенный вид, занимающий около 40% нижней части экрана, как в Apple Maps на iOS

Прямо сейчас я пытаюсь использовать делегата для связи между двумя представлениями. В частности, когда сканирование завершено, я вызываю метод делегата с именем didScanSuccessfully() и собираюсь использовать этот метод делегата в классе JSQRCodeInstructionsView для обновления своей метки.

JSQRCodeScannerView

protocol JSQRCodeScannerViewDelegate: AnyObject {
    func didScanQRCodeSuccessfully()
}

class JSQRCodeScannerView: UIView {

    weak var delegate: JSQRCodeScannerViewDelegate?


    func scanIsCompleted() {
        delegate?.didScanQRCodeSuccessfully()
    }

}

JSQRCodeInstructionsView

class JSQRCodeInstructionsView: UIView, JSQRCodeScannerViewDelegate {

      func didScanQRCodeSuccessfully() {
          //Update label
      }

}

Прямо сейчас я не могу заставить метод делегата в JSQRCodeInstructionsView срабатывать. Все работает до этого момента. Я пропускаю шаг или что-то не так с коммуникацией между двумя UIViews в фреймворке, который не будет работать?

1 Ответ

0 голосов
/ 29 июня 2019

Может быть, делегат «ноль». Попробуйте установить JSQRCodeInstructionsView в качестве делегата JSQRCodeScannerViewDelegate где-нибудь, например:

jsQRCodeScannerViewInstance.delegate = jsQRCodeInstructionsViewInstance
...