Swifty Snacks 103:我的城堡之王?

在iOS中,委托是一种通信模式,可使2个UIView彼此通信。

委托,就是将某项工作交给其他人,以便他们可以替您完成。 在iOS开发的背景下,委派是指“老板”视图控制器将工作交给下属的“实习生”视图控制器-向Sean Allan大喊大叫(YouTube iOS开发视频)。

让我们构建一个项目,以简单的方式演示委派。 我们与故事板的生活无关,因此首先删除Main.storyboard(请参见Swifty Snacks 101)并建立一个窗口以凝视我们的示例项目。 该演示应用程序将包含两个视图控制器,特别是InternController和BossController。 在AppDelegate中,将InternController分配为窗口的rootViewController。

一旦我们的rootViewController(InternController)诞生了,就将BossController的一个实例推入堆栈。

如您所见,BossController由位于蓝色背景顶部的UIButton(dismissButton)组成。

现在,我们准备编写委托设计模式的简单实现代码:让我们授权老板向她的实习生发送命令。

在BossController类上方:UIViewController {}定义了我们的InternController必须遵循的协议。

接下来,在BossController类中定义变量“ delegate”作为对BossControllerDelegate的弱引用。

然后将BossController的dismissButton重新配置为a)关闭控制器,并b)使Boss通过委派对她的实习生大喊大叫。

如果我们现在运行我们的应用程序,则实习生将不会收到Bosses指令。 为了使我们的实习生能够接收命令,我们需要使他符合老板的协议。

最后,我们需要考虑最合适的时候正式化老板和她的实习生之间的关系。 答案是在将BossController的实例推入堆栈(即在我们的pushBossController函数内部)时这样做。

‘bc.delegate = self’转换为BossController将作业交给InternController(self)执行。 现在代码已完成,按BossController上的dismiss按钮会将其从堆栈中删除,并将InternController的backgroundColor(如下)更改为黄色。

“世界是由您的榜样而不是您的意见所改变的。”-Paulo Coelho