ios - Swift 中未调用协议(protocol)实现方法

标签 ios swift

我使用的是 Xcode 10.3。我有哪个方法没有调用的协议(protocol)。怎么了?

我的第一个带有协议(protocol)的 View Controller :

protocol MyProtocol: class {
   func doGetUpdateInfo(valu1:String,value2:String);
}

class Class_A : UIViewController{
    weak var myprotocolDelegate:MyProtocol? = nil;

    override func viewDidLoad() {
        super.viewDidLoad()

        myprotocolDelegate?.doGetUpdateInfo(account_no:value1, account_title: value2)
    }
}

我的第二个 View Controller

class Class_B: UIViewController,UpdateBeneficiaryProtocol {
    var class_a = Class_A()

    override func viewDidLoad() {
        super.viewDidLoad()
        class_a.myprotocolDelegate = self;
    }

    func doGetUpdateInfo(value1: String, value2: String) {
        print("not calling****")
    }
}

这有什么问题吗?

最佳答案

请看下面的例子。您正在为 A 创建一个新类,但因此它不会被调用。您需要为当前类(class)提供引用

protocol MyProtocol: class {
 func doGetUpdateInfo(valu1:String,value2:String);
}

class Class_A : UIViewController{
weak var myprotocolDelegate:MyProtocol? = nil;

override func viewDidLoad() {
    super.viewDidLoad()

    myprotocolDelegate?.doGetUpdateInfo(account_no:value1, account_title: value2)
}
func navigateToClassB() {
     let classb = Class_B() 
     classb.class_a = self
     self.navigationController?.pushViewcontroller(classb, animated:true)
}
 }

b 类应该是

class Class_B: UIViewController,UpdateBeneficiaryProtocol {
var class_a : Class_A?

override func viewDidLoad() {
    super.viewDidLoad()
    class_a.myprotocolDelegate = self;
}

func doGetUpdateInfo(value1: String, value2: String) {
    print("not calling****")
}
}

按照方法navigateToClassB中的显示推送 Controller Class_b。 如果您在此处仍然遇到问题评论,我会为您提供帮助。

关于ios - Swift 中未调用协议(protocol)实现方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57900068/

相关文章:

ios - 将字典数据转换为 HTTP url 格式

ios - 在 Swift 中使用 Alamofire 处理 XML 数据

ios - Swift 2.0 - Google Analytics 事件生成器错误 - NSMutableDictionary 不可转换为 [NSObject : AnyObject]

ios - 尝试使用 pod 相对于 nanopb 安装 Firebase 时出错

Swift iOS - 如何将 subview 添加到窗口的中心?

iOS 后台蓝牙事件

class - 在 Swift 中实例化类时将值传递给要使用的类

ios - 使用 xcbuild/xcrun 和 xcconfig 向 cordova ios 应用程序添加 64 位支持

ios - 访问快速枚举中的值

ios - swift 错误 : signal SIGABRT how to solve it