在我的应用程序中(使用swift),我有一个场景,用户必须使用由一组按钮组成的键盘输入密码。在第一次加载应用程序时,我还希望有一个用户输入他们想要用于应用程序的密码的场景。
密码输入屏幕将使用相同的按钮集合键盘。
为了创建可维护的代码库,我不想通过复制粘贴键盘的xml和控制器代码来重写代码。
在iOS中处理此问题的正确方法是什么?有没有一种方法可以抽象出一组视图元素,并将它们作为具有某种界面的单一视图添加到故事板中?
答案 0 :(得分:0)
我实现这个的方式如下:
创建容器视图。将组中的所有视图移动到此容器视图。为此容器视图创建一个控制器。将此容器视图嵌入到需要它的任何视图中。
为了在父视图和容器视图之间具有功能,我创建了一个包含所需函数的协议(对我而言,它是passEntered(pass:String) - > Bool)并且使用容器的视图符合该协议。容器视图控制器在必要时调用父控制器上的协议功能。
所以,特别针对我的问题:我将整个密码键盘放在容器视图中。然后,我在解锁场景和设置的密码场景中嵌入了该容器视图。这两个场景的控制器都实现了ViewWithPasscode协议,该协议具有passEntered功能。当有人输入所有4个引脚值时,键盘控制器会调用它的父控制器的passEntered功能。