我如何使单例 class 作为 swift 3 中的委托
How do i make singleton class as delegator in swift3
我有一个单例 class,如下面的代码片段所示。
protocol EmpLoginDelegate {
func empLoginSuccess()
func empLoginFailed()
}
class CommunicationModule {
static let sharedInstance = CommunicationModule()
private init() {
}
var empLoginDelegate:EmpLoginDelegate?
func test(){
self.empLoginDelegate?.empLoginSuccess()
}
}
我的委托 class 显示在下面的代码片段中。
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) 的单例 class 中是否还有其他方法可以使用委托模式。
我觉得这个方法不错,对我来说是最好的方法
final class Singleton {
// Can't init is singleton
private init() { }
//MARK: Shared Instance
static let shared: Singleton = Singleton()
}
确保您与单例的通信正常。要将 LoginViewController
的实例设置为 empLoginDelegate
,请调用:
CommunicationModule.sharedInstance.empLoginDelegate = self
来自 LoginViewController
.
内部的方法
我有一个单例 class,如下面的代码片段所示。
protocol EmpLoginDelegate {
func empLoginSuccess()
func empLoginFailed()
}
class CommunicationModule {
static let sharedInstance = CommunicationModule()
private init() {
}
var empLoginDelegate:EmpLoginDelegate?
func test(){
self.empLoginDelegate?.empLoginSuccess()
}
}
我的委托 class 显示在下面的代码片段中。
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) 的单例 class 中是否还有其他方法可以使用委托模式。
我觉得这个方法不错,对我来说是最好的方法
final class Singleton {
// Can't init is singleton
private init() { }
//MARK: Shared Instance
static let shared: Singleton = Singleton()
}
确保您与单例的通信正常。要将 LoginViewController
的实例设置为 empLoginDelegate
,请调用:
CommunicationModule.sharedInstance.empLoginDelegate = self
来自 LoginViewController
.