如何设置来自子class的委托?

How to set up a delegate from the child class?

一切正常,但我正在努力改进它们的工作方式;)

这是我的场景:

我有一个自定义按钮,点击事件触发 ViewController 中的自定义函数。这是通过委托发生的,一切正常。

我正在使用故事板和 control+click 创建自定义按钮的出口,然后在 ViewController class 中设置委托,例如:

@IBOutlet weak var myButtonInstance: MyButton!

override func viewDidLoad() {
    super.viewDidLoad()
    myButtonInstance.delegate = self
}

我的问题:

有没有办法从自定义按钮中设置此委托 class?我看到 Swift 中没有 self.parent,这就是我一直在寻找的内容:

(伪代码)

on custom button initialization:
 self.delegate = self.parent

如果我没理解错的话,您想从按钮内部获取对控制器的引用以将其设置为代理人!?

您的 UIButton 是视图层次结构的一部分 - 但您的 ViewController 不是。不存在而且 不应该 是应用程序视图部分的元素访问其控制器部分的简单方法。它应该只通过所述委托与控制器通信。其他任何东西都会与 MVC 设计模式冲突。

从逻辑上讲,指派其他人作为您的代表是没有意义的。它应该始终是委托人通过将自己指定为委托人来启动委托过程。