如何从子类中设置委托?

时间:2015-05-23 20:32:17

标签: ios swift delegation

事情正在发挥作用,但我正在努力改进他们的工作方式;)

这是我的情景:

我有一个自定义按钮,而tap事件正在触发ViewController中的自定义功能。这是通过代表发生的,一切正常。

我正在使用故事板和控件+单击来创建自定义按钮的插座,然后在ViewController类中设置委托,如:

@IBOutlet weak var myButtonInstance: MyButton!

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

我的问题:

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

(伪代码)

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

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您希望从按钮内部获取对控制器的引用,以将其设置为委托!?

您的UIButton是视图层次结构的一部分 - 但您的ViewController却不是。没有更多不应该是应用程序的View部分元素访问其Controller部分的简单方法。它应该只通过所述代表与Controller通信。其他任何东西都会与MVC设计模式发生冲突。

在合乎逻辑的术语中,虽然将其他人指定为您的代表是没有意义的。始终应该是通过将自己指定为委托来启动委派过程的委托。