我使用的是 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/