使用相同视图和控制器功能组的多个场景,无需复制粘贴代码

时间:2015-03-25 21:24:47

标签: ios swift uiview

在我的应用程序中(使用swift),我有一个场景,用户必须使用由一组按钮组成的键盘输入密码。在第一次加载应用程序时,我还希望有一个用户输入他们想要用于应用程序的密码的场景。

密码输入屏幕将使用相同的按钮集合键盘。

为了创建可维护的代码库,我不想通过复制粘贴键盘的xml和控制器代码来重写代码。

在iOS中处理此问题的正确方法是什么?有没有一种方法可以抽象出一组视图元素,并将它们作为具有某种界面的单一视图添加到故事板中?

1 个答案:

答案 0 :(得分:0)

我实现这个的方式如下:

创建容器视图。将组中的所有视图移动到此容器视图。为此容器视图创建一个控制器。将此容器视图嵌入到需要它的任何视图中。

为了在父视图和容器视图之间具有功能,我创建了一个包含所需函数的协议(对我而言,它是passEntered(pass:String) - > Bool)并且使用容器的视图符合该协议。容器视图控制器在必要时调用父控制器上的协议功能。

所以,特别针对我的问题:我将整个密码键盘放在容器视图中。然后,我在解锁场景和设置的密码场景中嵌入了该容器视图。这两个场景的控制器都实现了ViewWithPasscode协议,该协议具有passEntered功能。当有人输入所有4个引脚值时,键盘控制器会调用它的父控制器的passEntered功能。