我正在尝试让代表们使用Swift为OSX应用程序工作。
import Cocoa
class loginViewController: NSViewController {
weak var delegate: recordViewControllerDelegate?
override func viewDidLoad() {
super.viewDidLoad()
// Do view setup here.
delegate?.trySomething()
self.delegate?.trySomething()
self.delegate?.testPrint("hello, is it me your looking for")
}
}
protocol recordViewControllerDelegate: class {
func testPrint(val: String)
func trySomething()
}
class recordViewController: NSViewController, recordViewControllerDelegate {
func testPrint(val: String) {
print(val)
}
func trySomething() {
print("aaa")
}
}
一切看起来都很正常,但testPrint & trySomething从未被调用,添加了断点,但什么都没有发生。
你知道我错过了什么吗?
把我逼得弯曲。
1条答案
按热度按时间4bbkushb1#
因为你的
self.delegate
是nil
,所以你应该先分配一个对象。试着这样做,这是我的AppDelegate.swift
可可演示项目的代码:一切正常,我可以看到打印的日志。请注意,在我的例子中,我直接调用
viewDidLoad
函数-只是为了向你展示委托模式是如何工作的。苹果不建议直接调用它。正确的方法是提供视图控制器,viewDidLoad
函数将由OS X SDK API调用。