簡體   English   中英

協議實現方法未在Swift中調用

[英]Protocal implementation method not calling in Swift

我正在使用Xcode 10.3。 我有不調用哪個方法的協議。 怎么了?

這是我的代碼。

  1. 我的第一個帶有protocal ..的視圖控制器

     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) } } 
  2. 我的第二個視圖控制器

     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創建一個新類,但不會被調用。 您需要提供當前課程的參考

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****")
}
}

按照方法NavigationToClassB中的顯示推送控制器Class_b。 如果您仍然在這里發表評論,我會為您提供幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM