【发布时间】:2019-02-13 17:39:30
【问题描述】:
我的委托发送者类:
import UIKit
protocol tapDelgation:class {
func tapConfirmed(message:String)
}
class ViewController: UIViewController {
weak var delegate:tapDelgation?
@IBAction func deligateSenderAction(_ sender: Any) {
var data = "hello world"
print(data)
self.delegate?.tapConfirmed(message: data)
}
}
我的接收者班级:
import UIKit
class NextViewController: UIViewController {
weak var vc:ViewController? = ViewController()
override func viewDidLoad() {
super.viewDidLoad()
vc?.delegate = self
}
}
extension NextViewController : tapDelgation {
func tapConfirmed(message: String) {
print(message)
}
}
预期结果:按下发送方 vc 上的按钮,然后从接收方 vc 弹出控制台打印。但徒劳无功,什么都没有发生。有谁知道为什么会这样?如果不可能,那为什么?
【问题讨论】:
-
NextViewController在哪里显示vc? -
NextViewController 来自 ViewController 的页面转换之后
-
您需要显示执行此操作的代码。
-
我需要使用prepare吗??
-
这真的取决于你如何准确地显示“ViewController”。我有一种感觉,您设置委托的“ViewController”实例实际上并不是正在显示的 ViewController 实例。
标签: ios swift swift-protocols delegation