我有一个单例类,如下面的代码片段所示。

protocol EmpLoginDelegate {
    func empLoginSuccess()
    func empLoginFailed()
}
class CommunicationModule {
    static let sharedInstance = CommunicationModule()
    private init() {
    }
    var empLoginDelegate:EmpLoginDelegate?

    func test(){
           self.empLoginDelegate?.empLoginSuccess()
    }
}


我的委托类显示在下面的代码片段中。

extension LoginViewController: EmpLoginDelegate{
  func empLoginSuccess(){
    wrongAttempts = 0
    loginSuccess = true
    print("EmpLoginIsSuccess")
    performSegue(withIdentifier: "attendanceView", sender: self)

  }
  func empLoginFailed(){
    wrongAttempts = wrongAttempts + 1
    userNameTextField.shake(count: 3, for: 0.3, withTranslation: 10)
    passwordTextField.shake(count: 3, for: 0.3, withTranslation: 10)
    loginSuccess = false
    loginAlert(alertTitle: "Invalid Credentials", alertMsg: "Your  employee id or password is not correct")
  }
}


当我调用测试功能时,emploginSuccess()方法不会被调用。测试功能成功执行,没有任何错误。
我以为问题是empLoginDelegate没有在我的代码中初始化,因此我尝试了将其初始化为self的可能方法,但对我没有任何帮助。在swift3(iOS 10.3.1)中的单例类中是否还有其他使用委托模式的方法。

最佳答案

确保您与单例正确通信。要将LoginViewController的实例设置为empLoginDelegate,请调用:

CommunicationModule.sharedInstance.empLoginDelegate = self


来自LoginViewController内部的方法。

关于ios - 我如何在Swift3中将Singleton类作为委托(delegate)人,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43559182/

10-14 21:45