委托在Swift中的2个UIView之间进行通信

时间:2019-06-28 22:48:57

标签: swift delegates ios-frameworks

除了我的框架之外,我还有两种看法:

  1. JSQRCodeScannerView是摄影机视图
  2. JSQRCodeInstructionsView是一个较小的视图,像在iOS上的Apple Maps中一样,占据了屏幕底部的40%左右

现在,我正在尝试使用委托在两个视图之间进行通信。具体来说,当扫描完成时,我调用了一个名为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中的委托方法。一切工作到那时。我是否错过了一个步骤,或者在一个框架中两个UIView之间的通信是否有问题,特别是无法正常工作?

1 个答案:

答案 0 :(得分:0)

也许代表是“无”。 尝试将var parameters = new DynamicParameters(); param.Add("@MytableId" , mytableinstance.MytableId); var fullEnt = sqlConn.Query<MytableSource>(sqlStmt, parameters ).FirstOrDefault(); 设置为某个地方JSQRCodeInstructionsView的代表,就像这样:

JSQRCodeScannerViewDelegate